04.02.2007, 15:31 | #1 |
Участник
|
танцы с бубном - COM Объект не имеет метода 'worksheets'
Добрый день,
На второй день, проведенный в дебаггере, понял, что ничего не понимаю окончательно. В полном смятении, нужна помощь клуба. Есть ряд отчетов, выгружающих данные в нежно любимый пользователем эксель. Работают они давно и успешно. На неделе внесли в один из них ряд изменений, что выдало сразу замечательную трассировку: COM Объект не имеет метода 'worksheets' (C) \Classes\COM\worksheets (C) \Classes\ComExcelDocument_RU\getWorkSheet - line 13 (C) \Classes\ComExcelDocument_RU\findRange - line 12 (C) \Classes\ComExcelDocument_RU\insertValue - line 9 (C) \Classes\RWExcelReport_WorkShop\insertOLAPHeaderText - line 3 (C) \Classes\RWExcelReport_WorkShop\run - line 7 (C) \Classes\RWExcelReport\main - line 14 insertOLAPHeaderText - необязательно этот метод. Любой, кто делает банальное excelDocument.insertValue(...) на какой либо лист - таких в классе штук пять. Все меняли, все переставляли. Убирали изменение. Добавляли иные. Вообще оставили одну строку с excelDocument.insertValue(..). Компилировали все используемые классы. Компилировали инкрементно. Компилировали АОТ. Взяли с трех проектов ComExcelDocument_RU - посравнивали. Убили usr слой с ComExcelDocument_RU с невнятными старыми измененями. Ну что еще? - всего за два дня не упомнишь. Всякие мелочи типа удаление данных пользователя, рестарт КОМ-сервиса на локальной мешине - понятно дело, делали. Шаблон заново создавали. Переносили на иные диски. Итог был регулярно один и тот же... Что характерно - иногда отчет строился. Мы радостно откладывали бубен в сторону и начинали приводить его в итоговый вид из полуразобранного, но на второе-третье построение получали тот же отлуп. В какой то из моментов доходило до того, что этот отчет, со всеми параметрами, которые в принципе можно сделать равными, подряд: - строился, - строился, - строился, - НЕ строился, - строился, - НЕ строился, - НЕ строился, - строился... Понятно в принипе, что в какой то момент при запуске отчета и инициализации классов КОМа объект m_comDocument то считает себя документом экселя, то нет. Но причина непонятна. Шаблон сделан как .xlt. Axapta 3.0 CIS SP2 RWExcelReport RunOn: Called from ComExcelDocument_RU RunOn: Client Есть идеи? |
|
05.02.2007, 10:49 | #2 |
Участник
|
У меня подобная обшибка возникает если в момент формирования открыть другой Excel файл, или в процессах зависает процесс Excel. И ошибки могут быть разными. Здесь уже где-то подобное рассматривали
|
|
05.02.2007, 12:23 | #3 |
Пенсионер
|
Очень часто такое происходит, если не предусмотрено принудительное закрытие ёксель файла по ошибке, он остается в памяти, а если открывался как анвизибл, то сразу и не поймешь.
Просто надо принудительно его финализировать...хотя может быть и другая причина
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
05.02.2007, 14:21 | #4 |
Участник
|
Ошибка пропала после того, как заменил параметр видимости экселя при создании файла:
excelDocument = new ComExcelDocument_RU(); excelDocument.newFile(templateFile, true)); Изначально было false. Хотел посмотреть, что эксель делает в момент ошибки, но после этой операции ошибка больше не появлялась. Причина осталась за кадром |
|
05.02.2007, 14:25 | #5 |
Участник
|
А вы в окне Excel на клавиатуре в момент экспорта ничего не нажимали?
Вообще, посмотрите эту тему Проблема с импортом из Excel через COM
__________________
Axapta v.3.0 sp5 kr2 |
|
Теги |
olap, ax3.0 |
|
Похожие темы | ||||
Тема | Ответов | |||
Ошибка при вызове COM-метода | 8 | |||
Как удалить COM объект? | 8 | |||
Объект, как параметр COM-метода | 10 | |||
FormActiveXControl Объект не имеет метода Application() | 10 |
|