Страница 1 из 2
9.1 и глюк OLE ?
Добавлено: 09 Апрель 2014, 10:23
Андрей
Есть приложение собранное на 9.0 - все работает
Перекомпиллирую на 9.1.10789 - и.... виснет вывод в Excel - появляется пустое окно Excel и висит пока не снимешь принудительно.
Возвращаюсь на 9.0 - опять все Ок.
Прошу проверить у кого есть возможность
Re: 9.1 и глюк OLE ?
Добавлено: 09 Апрель 2014, 11:37
Игорь Столяров
Привет !
Да, действительно. Какая-то проблема есть.
Проверили - в приложении собранном на C9.1 экспорт в MS Excel через OLE не выполняется.
Не проходит инициализация и запуск объекта (EO_{'Application.Name'} = 'No ole automation interface')
Надо разбираться. Интересно, что практически точно такой обмен с MS Word прекрасно работает.
Проверял на коде:
EO_ = Create(0,Create:Ole)
EO_{Prop:Create} = 'Excel.Sheet'
If EO_{'Application.Name'} = 'No ole automation interface'
Message(' Неудачная попытка запуска Microsoft Excel !','Сообщение',Icon:Exclamation,'&1. Закрыть')
Display
end
Re: 9.1 и глюк OLE ?
Добавлено: 09 Апрель 2014, 14:26
kreator
А попробуйте так:
Код: Выделить всё
LOC:OLE = create(0, CREATE:ole)
LOC:OLE{prop:Create} = 'EXCEL.Sheet.12'
, например. Может поддержка Sheet закончилась.
А ещё можно так попробовать:
Код: Выделить всё
LOC:OLE = create(0, CREATE:ole)
LOC:OLE{prop:Create} = 'EXCEL.Application'
Проверьте, если не сложно.
Re: 9.1 и глюк OLE ?
Добавлено: 10 Апрель 2014, 14:21
Игорь Столяров
Проверил. С91 10789
Замена 'Excel.Sheet' на 'Excel.Application' полностью снимает эту проблему.
Спасибо !

Re: 9.1 и глюк OLE ?
Добавлено: 10 Апрель 2014, 14:36
kreator
Игорь Столяров писал(а):Проверил. С91 10789
Замена 'Excel.Sheet' на 'Excel.Application' полностью снимает эту проблему.
Спасибо !

Ну ни чудо ли?
Ещё бы понять, в чём отличие, да? Мы как-то изначально пользуем конструкцию 'Excel.Application', не знаю почему, исторически сложилось.
Re: 9.1 и глюк OLE ?
Добавлено: 10 Апрель 2014, 14:48
Игорь Столяров
А вот интересно 'Excel.Application' запускает Excel из MS Office 365 ?
Помню, что с этим тоже были проблемы ...
Re: 9.1 и глюк OLE ?
Добавлено: 10 Апрель 2014, 17:04
Андрей
хммм....
А у меня и так было l:ole{Prop:Create} = 'EXCEL.Application'
Сначала я решил, что дело в том, что OLE контроль у меня не программно создавался, а визуально. Переделал на программное - тот же результат - висит пустое окно.
Пробую L:OLE{prop:Create} = 'EXCEL.Sheet.14' (у меня Excel 2010)- не работает и в 9.0 - вообще окно не появляется.
Как то можно отлавливать результаты отработки OLE{prop:Create} ?
В визуальном компоненте включал совместимости какие то 32-bit и Mode в разных сочетаниях - не помогает. Кстати, что это за совместимости ?
Re: 9.1 и глюк OLE ?
Добавлено: 10 Апрель 2014, 17:19
Игорь Столяров
Игорь Столяров писал(а):Как то можно отлавливать результаты отработки OLE{prop:Create} ?
Я же показал это в своем примере ниже:
EO_{Prop:Create} = ''EXCEL.Application'
Message(EO_{'Application.Name'})
При ошибке возвращает: EO_{'Application.Name'} = 'No ole automation interface'
Re: 9.1 и глюк OLE ?
Добавлено: 10 Апрель 2014, 17:23
kreator
Сто пудов - ошибки создания нет. Надо смотреть что дальше происходит.
Re: 9.1 и глюк OLE ?
Добавлено: 10 Апрель 2014, 23:45
Андрей
Да, действительно - ошибки создания нет.
Дальше идет собственно открытие
l:ole{'workbooks.open("' & l:FileName & '")'}
или l:ole{'Workbooks('& l:FileName & ').Activateopen'}
Не работает тут ? Как проверить ?
Re: 9.1 и глюк OLE ?
Добавлено: 11 Апрель 2014, 0:59
Андрей
ааа.... вот нашел как включить диагностику
l:OLE{Prop:ReportException}=TRUE
в результате имеем "Метод Open из класса Workbooks завершен неверно"
проку впрочем мало от сего
Re: 9.1 и глюк OLE ?
Добавлено: 11 Апрель 2014, 7:46
Игорь Столяров
Замени открытие на l:ole{'Application.Workbooks.Open("' & Clip(Left(l:FileName)) & '")'}
Re: 9.1 и глюк OLE ?
Добавлено: 11 Апрель 2014, 9:38
Андрей
l:ole{'Application.Workbooks.Open("' & Clip(Left(l:FileName)) & '")'} - не помогает
Вообще кто то пробовал - работает 9.1 с Excel ? Открываются файлы ?
Re: 9.1 и глюк OLE ?
Добавлено: 11 Апрель 2014, 9:54
kreator
Железно работающий кусок:
LOC:OLE = create(0, CREATE:ole)
LOC:OLE{prop:Create} = 'EXCEL.Application'
LOC:OLE{'Workbooks.Open("' & clip(GLO:TempPath) & 'rap008.xml")'}
LOC:OLE{'ActiveWorkbook.SaveAs("' & clip(LOC:FileName) & '",51)'}
LOC:OLE{'Workbooks.Close'}
LOC:OLE{prop:Deactivate}
destroy(LOC:OLE)
Проверь, существует ли l:FileName.
Re: 9.1 и глюк OLE ?
Добавлено: 11 Апрель 2014, 10:07
Игорь Столяров
Андрей писал(а):Вообще кто то пробовал - работает 9.1 с Excel ? Открываются файлы ?
Я пробовал. После замены 'Excel.Sheet' на 'Excel.Application' все операции: создание, открытие, запись, чтение, печать, форматирование и т.д. - работают.
Я правда все операции делаю в коде, без, как ты их называешь "визуальных" компонент Clarion. Сборка на С91 10789.
Единственный пока открытый вопрос - будет ли это работать с Excel из MS Office 365 ...