12.11.2015, 15:07 | #1 |
Участник
|
Excel и AX 2009
Добрый день всем!
Хочу из аксапты сделать отчет Excel с прикреплением файла. У меня пока не получается. X++: static void InsertAttachInExcel(Args _args) { ComExcelDocument_RU excel = new ComExcelDocument_RU(); COM OLEObjects; COM comWorksheet; COM application; COM comWorkbooks; ; excel.open("c:\\temp\\hello.xlsx"); application = excel.application(); comWorkbooks = Application.workbooks(); try { comWorksheet = application.activeSheet(); OLEObjects = comWorksheet.OLEObjects(); OLEObjects.Add("c:\temp\Д_013308.pdf"); //Ругается в этом месте. excel.documentSave(); } catch { excel.documentSave(); } } Что я делаю не так? |
|
12.11.2015, 15:43 | #2 |
Участник
|
Первое что бросилось в глаза. Путь к файлу написан с ошибкой. Обратные слеши не экранированы
|
|
12.11.2015, 16:00 | #3 |
Участник
|
Цитата:
В макросе VBA выглядит вот так: Код: Sub addFile() ActiveSheet.OLEObjects.Add(Filename:="C:\TEMP\Д_013308.pdf", Link:=False, _ DisplayAsIcon:=True, IconFileName:= _ """C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe""", IconIndex _ :=0, IconLabel:="C:\TEMP\Д_013308.pdf").Select End Sub |
|
12.11.2015, 16:39 | #4 |
северный Будда
|
А если путь к файлу прописать в отдельном поле и использовать это поле вместо текста?
__________________
С уважением, Вячеслав |
|
12.11.2015, 16:42 | #5 |
Участник
|
Из справки Excel
Код: OLEObjects.Add Method expression.Add(ClassType, FileName, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, Left, Top, Width, Height) (you must specify either ClassType or FileName). A string that contains the programmatic identifier for the object to be created. If ClassType is specified, FileName and Link are ignored. Попробуйте заменить на это: X++: OLEObjects.Add(ComVariant::createNoValue(), @'c:\temp\Д_013308.pdf'); |
|
|
За это сообщение автора поблагодарили: Dumfag (1). |
12.11.2015, 16:44 | #6 |
Участник
|
Открываете справку по методу OleObject.Add()
https://msdn.microsoft.com/en-us/lib...ffice.15).aspx Его синтаксис выглядит так expression.Add(ClassType, FileName, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, Left, Top, Width, Height) Поскольку Axapta не поддерживает именованные параметры, то параметры указываются в порядке их следования. Т.е. параметр FileName - это второй параметр. А перед ним должен быть параметр ClassType. В данном случае, вместо него надо передать null "На вскидку" (не проверял), должно быть что-то вроде такого X++: ComVariant var; ; var = new ComVariant(COMVariantInOut::In_out, ComVariantType::VT_BOOL); var.variantType(ComVariantType::VT_NULL); OLEObjects.Add(var, "c:\\temp\\Д_013308.pdf");
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: Dumfag (1). |
12.11.2015, 16:56 | #7 |
Участник
|
Спасибо всем, кто откликнулся. Проблема решена.
|
|
Теги |
axapta, com-объект, excel, oleobjects |
|
|