работа с COM в C/AL
имеется тривиальная задача: добавить в excel-евский документ пару свойств.
макрос на vba делает это следующим образом:
Worksheets(1).Activate
Set CustDocProperties = ActiveWorkbook.CustomDocumentProperties.Add("MyProperty", False,4,"Some stuff")
//добавляется свойство "MyProperty" типа Text со значением "Some stuff"
все работает чудесно
аналогичный код на Lotus Script (скриптовый язык) - привел здесь потому что c/al тоже скриптовый язык. Работа с COM в скриптовых языках одинакова.
:
Public OExcel As Variant
Public OBook As Variant
Set OBook=Nothing
Set OExcel=Nothing
Set OExcel = CreateObject("Excel.Application")
Set OBook = OExcel.Workbooks.Add
with OBook
.CustomDocumentProperties.Add "MyProperty", False, 4, "Some text"
end with
все работает чудесно
аналогичный код на c/al
IF NOT CREATE(XlApplication,TRUE) THEN
ERROR(Text000);
XlApplication.Visible(FALSE);
XlWorkBook := XlApplication.Workbooks.Add;
WITH XlWorkBook DO BEGIN
xlDocProp := CustomDocumentProperties.Add("MyProperty", False, 4, "Some text");
END;
не работает ничерта
все ошибки выскакивают на стадии компиляции:
начнем разбор:
1) строка
xlDocProp := CustomDocumentProperties.Add("MyProperty", False, 4, "Some text");
не работает, пишет:
"вы использовали неопределенную переменную Add. Определите переменную в Global C/AL". Тип переменной xlDocProp ставил и variant и Automation(+подтип)
2)код в виде
WITH XlWorkBook DO BEGIN
CustomDocumentProperties.Add("MyProperty", False, 4, "Some text");
END;
не работает, пишет:
"возвращаемое значение должно использоваться для этой ф-ции"
подскажите что нибудь по этому поводу?как можно реализовать(и вообще можно ли ) данную простейшую задачу на великом и могучем c/al?
P.S.: можно конечно писать свой ActiveX для работы с Excel -но ведь всякие пустяки не стоят этого.
|