Форум » GUI » Работа с Ole из HBWIN » Ответить

Работа с Ole из HBWIN

Andrey: Pasha пишет: [quote]после этого можно перейти на использование класса win_oleAuto из библиотеки hbwin, заменив строку oExcel := CreateObject( "Excel.Application" ) на win_oleCreateObject( "Excel.Application" ) Используя класс win_oleAuto, можно вместо передачи через буфер обмена передавать в Excel всю таблице одним вызовом __oleVariantNew() В принципе передача через буфер обмена фрагментами по 20к тоже работает быстро, но можно и делать это прямой записью. [/quote] Сделал такую конструкцию: [pre2]#xcommand TRY => BEGIN SEQUENCE WITH {|__o| break(__o) } #xcommand CATCH [<!oErr!>] => RECOVER [USING <oErr>] <-oErr-> ..... Try oExcel := win_oleCreateObject( "Excel.Application" ) Catch MsgStop( "Excel not available. [" + win_oleErrorText() + "]", "Error" ) Return Nil End[/pre2] В системе, где не установлен Эксель, не работает !!! Прога вылетает далее на обращении к oExcel:WorkBooks:Add()...: Error BASE/1004 No exported method: WORKBOOKS Called from WORKBOOKS(0) Called from BRW4XLSOLE(74) in module: Tsb4xlsOle.prg Как нужно правильно сделать ?

Ответов - 52, стр: 1 2 3 All

Andrey: Тестировал программу в Office 2003, 2007, 2010 - экспорт нормально работает. Поставил в Oracle VM VirtualBox Win7 32bit + Office 2016. Программа экспорта в Ворд работает отлично, БЕЗ ВЫЛЕТА !!! Если тестирую на Win10 64bit + Office 2016 на игровом компе (там 8 ядер, 32 ОЗУ), то программа продолжает вылетать. Может быть из-за того что комп не "офисный" ? Может и криво установлен Офис, с какими то дополнениями. Там доп.вопросы возникают - типа Word программа не по умолчанию. Вот такое сообщение: Т.е. нужно тестировать дальше программу на Office 2016 на других компах.

Andrey: Всем привет ! Выгружать больше 32767 строк в WinWord НЕЛЬЗЯ ! Ограничение WinWord 2003-2016. Выгружать больше 65533 строк в Excel НЕЛЬЗЯ ! Ограничение Excel 2003. В OO Calc и Excel 2007 - 2016 можно выгружать больше (сколько не уточнял), но появляется окно с предупреждением, которое чаще всего висит под моей программой, так как Экселем запущен в скрытом режиме. А Юзер и не видит это окно, и сразу претензия - программа висит и не работает. Замучился с этим. Как сделать, чтобы это окно можно было выводит на передний план ? Или есть возможность в коде, как то игнорировать такие предупреждения ? P.S. Кстати такие типовые предупреждения появляются и в Ворде и Экселе, если версии созданных документов не совместимы. Юзеру трудно объяснить, как с этим бороться. Хотелось что бы такие сообщения выводились на передний план экрана.

Pasha: Ээ. так есть же oExcel:DisplayAlerts, о котором здесь стотыщмильёнов раз говорилось


Dima: Pasha пишет: о котором здесь стотыщмильёнов раз говорилось та даже больше ))

Andrey: Pasha пишет: так есть же oExcel:DisplayAlerts, о котором здесь стотыщмильёнов раз говорилось Забыл про это... СПАСИБО !

Pasha: Андрей, я опять запустил твой демо с Excel 2016 Excel дуркует. Идут ошибки, каждый раз в разном месте: Error WINOLE/1006 Argument error: _SIZE (DOS Error -2146777998) Called from WIN_OLEAUTO:_SIZE(0) Called from BRW4XLSOLE(122) in module: Tsb4xlsOle.prg Error WINOLE/1006 Argument error: _SIZE (DOS Error -2146777998) Called from WIN_OLEAUTO:_SIZE(0) Called from BRW4XLSOLE(279) in module: Tsb4xlsOle.prg Error WINOLE/1009 No exported method: FONT (DOS Error -2147418111) Called from WIN_OLEAUTO:FONT(0) Called from BRW4XLSOLE(166) in module: Tsb4xlsOle.prg Error WINOLE/1008 No exported variable: BOLD (DOS Error -2147418111) Called from WIN_OLEAUTO:_BOLD(0) Called from BRW4XLSOLE(141) in module: Tsb4xlsOle.prg Error WINOLE/1007 Argument error: FONT (DOS Error -2147418111) Called from WIN_OLEAUTO:FONT(0) Called from BRW4XLSOLE(166) in module: Tsb4xlsOle.prg Правда один раз пример отработал до конца, обойдя все мины с обращениями к Font, Bold, Size и тому подобное. Я не удивлюсь, если завтра все заработает безупречно. И вопрос: Подскажите пожалуйста почему так происходит и как исправить ?

Andrey: Pasha пишет: Андрей, я опять запустил твой демо с Excel 2016 Excel дуркует. Идут ошибки, каждый раз в разном месте: А может от Офиса это зависит ? Попробуй на другом компе.... Я писал ранее: Тестировал программу в Office 2003, 2007, 2010 - экспорт нормально работает. Поставил в Oracle VM VirtualBox Win7 32bit + Office 2016. Программа экспорта в Ворд работает отлично, БЕЗ ВЫЛЕТА !!! Если тестирую на Win10 64bit + Office 2016 на игровом компе (там 8 ядер, 32 ОЗУ), то программа продолжает вылетать, но ТОЛЬКО Ворд вылетает. Эксель не вылетает ! Может быть из-за того что комп не "офисный" ? Может и криво установлен Офис, с какими то дополнениями. Там доп.вопросы возникают - типа Word программа не по умолчанию. Как программу эту доделаю (твою доработку тоже жду), то выложу для тестировки всем желающим.

SergKis: Andrey [pre2] Если исп. вместо oSheet:Cells( nLine, nColHead ):Value := uData // oSheet:Cells( nLine, nCol ):Borders():LineStyle := xlContinuous oSheet:Cells( nLine, nColHead ):Font:Name := aFont[ 1 ] oSheet:Cells( nLine, nColHead ):Font:Size := aFont[ 2 ] oSheet:Cells( nLine, nColHead ):Font:Bold := aFont[ 3 ] так oSCell := oSheet:Cells( nLine, nColHead ) ? procname(), procline(), oSCell // oSCell:Value := uData oCFnt := oSCell:Font ? procname(), procline(), oCFnt, aFnt[1], aFnt[2], aFnt[3] oCFnt:Name := aFont[ 1 ] oCFnt:Size := aFont[ 2 ] oCFnt:Bold := aFont[ 3 ] oSCell:Value := uData // переставить DoMessageLoop() // сначала без этой строки потом с ней [/pre2]

Andrey: SergKis пишет: Если исп. вместо Да у меня не вылетает вообще... Нужно Павла просить, чтобы попробовал. Pasha пишет: И вопрос: Подскажите пожалуйста почему так происходит и как исправить ? Ну блин, нашли кого спрашивать... Для меня вообще это загадки ...

Pasha: Запустил тест десяток раз. Один раз отработал до конца, остальные попытки дают вылеты в самых разных местах: при обращении к Font, Size, Cells, Name, Value Так что вряд ли такие изменения помогут. Не в одном, так в другом месте будет вылет. Причина непонятна. Как я уже говорил, сталкиваюсь с таким поведением последних версий Office не первый раз. Запустил свою программу, и прогнал различные варианты выгрузки в Excel. Вылет в некоторых случаях происходит, в некоторых нет.

PSP: Может не в тему, но навеяло: вспомните, как винда10 удаляет файл. Даже маленький. Такое впечатление, что сначала она его куда-то отправляет, а потом уже удаляет. Может и со свежими офисами такая же петрушка?

Dima: Pasha пишет: Вылет в некоторых случаях происходит, в некоторых нет. Та же фигня , но в версии 2003 все норм



полная версия страницы