Страница 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' полностью снимает эту проблему.

Спасибо ! :)
Ну ни чудо ли? :mrgreen:
Ещё бы понять, в чём отличие, да? Мы как-то изначально пользуем конструкцию '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 ...