Показать сообщение отдельно
Старый 11.08.2006, 11:00   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,654 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Вызов Item() для коллекций Excel
AXAPTA 2.5 SP3

Надо при формировании отчета в Excel добавить в сформированный файл некоторую служебную информацию: кто и когда создал отчет.

В Excel для этого можно воспользоваться пунктом меню: Файл - Свойства - закладка "Прочие"

На уровне объектной модели Excel - это экземпляр коллекции CustomDocumentProperties объекта WorkBook.

Для отладки, создаю файл "Пример.xls" записываю в него одно свойство и далее пытаюсь его прочитать:

PHP код:
static void MVB_Excel_DocProperty(Args _args)
{
    
COMExcelDocument_RU     excel;
    
FileName                fileName "C:\\Пример.xls";
    
COM     comDocProp,
            
comOneProp;
    
COM     m_comDocument;
    
str     strName;
    
int     qtyProp,
            
nextI;
    ;

    
excel = new ComExcelDocument_RU();
    
excel.newFile(fileName,true);
    
m_comDocument excel.getComDocument();
    
    
comDocProp  m_comDocument.CustomDocumentProperties();
    
qtyProp     comDocProp.count();
    
info(strFmt("%1",qtyProp));

    
comOneProp comDocProp.Item(1);
    
strName comOneProp.name();
    
info(strName);

Происходит ошибка при попытке вызвать метод Item().

Цитата:
Общий сбой при вызове метода Item' COM-объекта.
Т.е. код показывает, что коллекция содержит элементы, но получить ссылку на объект внутри коллекции - не могу (!). Аналогичное сообщение при попытке добавить свойство через метод Add().

Можно ли обойти проблему?

Да, с коллекцией BuiltinDocumentProperties (это то, что на закладке "Документ" в свойствах Excel) происходит то же самое. Колекцию "вижу", объекты коллекции - нет.

Пробовал с Excel 2000 и Excel 2003 (на разных машинах) - результат одинаковый.

AXAPTA 2.5 SP3