On-line: Alex_Cher, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 5911
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.06.18 13:32. Заголовок: Работа с Ole из HBWIN


Pasha пишет:

 цитата:
после этого можно перейти на использование класса win_oleAuto из библиотеки hbwin, заменив строку

oExcel := CreateObject( "Excel.Application" )

на

win_oleCreateObject( "Excel.Application" )

Используя класс win_oleAuto, можно вместо передачи через буфер обмена передавать в Excel всю таблице одним вызовом __oleVariantNew()
В принципе передача через буфер обмена фрагментами по 20к тоже работает быстро, но можно и делать это прямой записью.



Сделал такую конструкцию:
#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

В системе, где не установлен Эксель, не работает !!!
Прога вылетает далее на обращении к oExcel:WorkBooks:Add()...:
Error BASE/1004 No exported method: WORKBOOKS
Called from WORKBOOKS(0)
Called from BRW4XLSOLE(74) in module: Tsb4xlsOle.prg

Как нужно правильно сделать ?


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 53 , стр: 1 2 3 All [только новые]


постоянный участник




Пост N: 5940
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.07.18 22:46. Заголовок: Тестировал программу..


Тестировал программу в Office 2003, 2007, 2010 - экспорт нормально работает.

Поставил в Oracle VM VirtualBox Win7 32bit + Office 2016.
Программа экспорта в Ворд работает отлично, БЕЗ ВЫЛЕТА !!!

Если тестирую на Win10 64bit + Office 2016 на игровом компе (там 8 ядер, 32 ОЗУ),
то программа продолжает вылетать. Может быть из-за того что комп не "офисный" ?
Может и криво установлен Офис, с какими то дополнениями.
Там доп.вопросы возникают - типа Word программа не по умолчанию. Вот такое сообщение:


Т.е. нужно тестировать дальше программу на Office 2016 на других компах.



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5941
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.07.18 14:20. Заголовок: Всем привет ! Выгру..


Всем привет !

Выгружать больше 32767 строк в WinWord НЕЛЬЗЯ ! Ограничение WinWord 2003-2016.
Выгружать больше 65533 строк в Excel НЕЛЬЗЯ ! Ограничение Excel 2003.
В OO Calc и Excel 2007 - 2016 можно выгружать больше (сколько не уточнял),
но появляется окно с предупреждением, которое чаще всего висит под моей программой,
так как Экселем запущен в скрытом режиме.


А Юзер и не видит это окно, и сразу претензия - программа висит и не работает.
Замучился с этим.
Как сделать, чтобы это окно можно было выводит на передний план ?
Или есть возможность в коде, как то игнорировать такие предупреждения ?

P.S. Кстати такие типовые предупреждения появляются и в Ворде и Экселе, если версии созданных документов не совместимы.
Юзеру трудно объяснить, как с этим бороться. Хотелось что бы такие сообщения выводились на передний план экрана.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3764
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.07.18 14:37. Заголовок: Ээ. так есть же oExc..


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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6867
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.07.18 14:48. Заголовок: Pasha пишет: о кото..


Pasha пишет:

 цитата:
о котором здесь стотыщмильёнов раз говорилось


та даже больше ))

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5942
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.07.18 15:15. Заголовок: Pasha пишет: так ес..


Pasha пишет:

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



Забыл про это... СПАСИБО !



Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3774
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.07.18 16:45. Заголовок: Андрей, я опять запу..


Андрей, я опять запустил твой демо с 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 и тому подобное.
Я не удивлюсь, если завтра все заработает безупречно.

И вопрос:
Подскажите пожалуйста почему так происходит и как исправить ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5962
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.07.18 18:32. Заголовок: Pasha пишет: Андрей..


Pasha пишет:

 цитата:
Андрей, я опять запустил твой демо с Excel 2016
Excel дуркует. Идут ошибки, каждый раз в разном месте:



А может от Офиса это зависит ?
Попробуй на другом компе....

Я писал ранее:
Тестировал программу в Office 2003, 2007, 2010 - экспорт нормально работает.

Поставил в Oracle VM VirtualBox Win7 32bit + Office 2016.
Программа экспорта в Ворд работает отлично, БЕЗ ВЫЛЕТА !!!

Если тестирую на Win10 64bit + Office 2016 на игровом компе (там 8 ядер, 32 ОЗУ),
то программа продолжает вылетать, но ТОЛЬКО Ворд вылетает. Эксель не вылетает !
Может быть из-за того что комп не "офисный" ?
Может и криво установлен Офис, с какими то дополнениями.
Там доп.вопросы возникают - типа Word программа не по умолчанию.


Как программу эту доделаю (твою доработку тоже жду), то выложу для тестировки всем желающим.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1934
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.07.18 19:12. Заголовок: Andrey Если исп. вм..


Andrey
 
Если исп. вместо
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() // сначала без этой строки потом с ней



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5963
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.07.18 20:16. Заголовок: SergKis пишет: Если..


SergKis пишет:

 цитата:
Если исп. вместо


Да у меня не вылетает вообще... Нужно Павла просить, чтобы попробовал.

Pasha пишет:

 цитата:
И вопрос:
Подскажите пожалуйста почему так происходит и как исправить ?


Ну блин, нашли кого спрашивать... Для меня вообще это загадки ...

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3775
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.07.18 20:43. Заголовок: Запустил тест десято..


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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1462
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 14.07.18 21:07. Заголовок: Может не в тему, но ..


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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6869
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.07.18 21:18. Заголовок: Pasha пишет: Вылет ..


Pasha пишет:

 цитата:
Вылет в некоторых случаях происходит, в некоторых нет.


Та же фигня , но в версии 2003 все норм

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3790
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.08.18 16:40. Заголовок: Плохая новость. Есть..


Плохая новость. Есть повод поднять темку.
Моя винда с экселем с прошлого раза не глючит, но возникла другая проблема у клиента.

Алгоритм у меня такой. В документе помечена строка в качестве шаблона (образца). Мне надо заполнить таблицу с данными, и для начала сделать копию этой строки энцать раз. Я это делаю незамысловатым копи-пасте в цикле:

Function CopyExcelRows(oDoc, oSheet, cRow, nCount)
Local nRow, nCopied := 1, nCopy, s1, cAdr

// перемещение на строку
oDoc:Goto(cRow)

// адрес строки
cAdr := oDoc:Selection:Address(.t.,, 1)
s1 := 2
if ! (Substr(cAdr, 2, 1) >= '0' .and. Substr(cAdr, 2, 1) >= '9')
s1 := At('$', Substr(cAdr, 2)) + 2
endif
nRow := Val(Substr(cAdr, s1))
if nRow # 0
// копирование nCount строк
while nCopied < nCount
nCopy := Min(nCopied, nCount - nCopied)
oSheet:Rows(StrTrim(nRow) + ":" + StrTrim(nRow + nCopy - 1)):Copy()
oSheet:Rows(StrTrim(nRow+nCopied)+":"+StrTrim(nRow+nCopied)):Insert(-4121) // xlDown
nCopied += nCopy
enddo
else
Alert('Неверная закладка ' + cRow)
endif
Return nRow

На злополучном компе эксель при копировании стал выдавать ошибку:
"Рисунок слишком велик и будет усечен", и строки естественно не копируются. Хотя там копируется всего-то несколько десяток строк, и никакого рисунка не наблюдается.
Поиск в гугле находит массу аналогичных жалоб на подобную ошибку, и обычные шаманские рекомендации как ее преодолеть.


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 53 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 403
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет