30.03.2007, 11:21
|
#1
|
Участник
Регистрация: 28.11.2005
Адрес: Москва
|
Работа с Excel через COM и ошибка 0x800A03EC (Range.AutoFilter)
Пытаюсь сделать простую, казалось бы, вещь: установить автофильтры на некоторые колонки листа Excel, в которые предварительно выводятся данные. В самом Excel вроде бы все просто:
PHP код:
Range("J5:J23").AutoFilter
Пытаюсь сделать то же самое в X++, получаю Range через ComExcelDocument_RU.findRange() (точнее через метод-обертку, предоставляющий доступ к findRange() «извне»), вызываю AutoFilter() - и получаю ошибку:
Цитата:
Метод "autoFilter" в COM-объекте класса "Range" возвратил код ошибки 0x800A03EC (<неизвестно>), который означает: Метод AutoFilter из класса Range завершен неверно.
Почему она вылезает - ума не приложу. В отладчике все выглядит нормально, объекты инициализированы, диапазон ячеек для Range передается корректный, заголовок в первой ячейке диапазона есть. Параметры никакие не передаю, поскольку в MSDN написано, что все параметры метода Range.AutoFilter() - необязательные. Пробовал диапазон ячеек, включая заголовок, заполнять без пропусков и только латиницей. Пробовал копировать %ProgramFiles%\Microsoft Office\Office11\1049\xllex.dll в ..\1033\ и даже, по всяким шаманским советам, копировать сам excel.exe в .\1033\xllex.dll. На всякий случай пробовал также делать через Selection:X++: COM app;
COM sel;
COM range;
;
// ...
range.select();
app = range.application();
sel = app.selection();
sel.autoFilter(); Диапазон нормально выделяется, но при вызове sel.autoFilter() вылезает такая же фигня. Причем объект sel, если верить отладчику, - это тоже Range, так что разницы по идее никакой и не должно быть. Кто-нить с таким сталкивался?..
Ms Office Excel 2003 (11.8120.8122) SP2 Rus, Axapta 3.0 SP5 KR2
|
|