|
![]() |
#1 |
Участник
|
Перепешите метод класса ComOfficeDocument_RU.visible() следующим образом
X++: // Show / hide application public void visible(boolean _bVisible = true) { ComVariant comVariant; COMDispFunction funcDisp; ; if (!m_comApplication) throw error(StrFmt("@DIS100406", this.GetApplicationName())); this.activate(_bVisible); // Activate application, if necessary comVariant = ComVariant::createFromBoolean(_bVisible); // RTG, 05.08.2010, МВБ --> // По непонятным причинам в Excel 2007 следующая команда ИНОГДА приводит к ошибке // Метод был вызван с неверным числом параметров. // Чтобы ее обойти необходимо сделать присвоение свойству через COMDispFunction // m_comApplication.Visible(comVariant); funcDisp = new COMDispFunction(m_comApplication, "Visible", COMDispContext::PROPERTYPUT); funcDisp.call(comVariant); funcDisp.finalize(); // RTG, 05.08.2010, МВБ <-- }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: Antonuch (1). |
![]() |
#2 |
Участник
|
Прошло время. Волею судеб сейчас мы все еще работаем на Axapta 3.0 SP4 Build #11.0
При том корпоративный MS Office уже 2013. Ошибка работы с Excel снова появилась, причем метод visible() уже переделан. Обращение к Excel происходит вот таким образом: excel = new COMExcelDocument_RU(); excel.newFile(#ReportTemplatePath_FileServer + "ApplicationFSS.xltx", false); excel.insertValue(bookmark, substr(_content, i, 1)); Подскажите, как все же еще можно переделать. |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от Fizik
![]() Прошло время. Волею судеб сейчас мы все еще работаем на Axapta 3.0 SP4 Build #11.0
При том корпоративный MS Office уже 2013. Ошибка работы с Excel снова появилась, причем метод visible() уже переделан. Обращение к Excel происходит вот таким образом: excel = new COMExcelDocument_RU(); excel.newFile(#ReportTemplatePath_FileServer + "ApplicationFSS.xltx", false); excel.insertValue(bookmark, substr(_content, i, 1)); Подскажите, как все же еще можно переделать. |
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от Fizik
![]() Прошло время. Волею судеб сейчас мы все еще работаем на Axapta 3.0 SP4 Build #11.0
При том корпоративный MS Office уже 2013. Ошибка работы с Excel снова появилась, причем метод visible() уже переделан. Обращение к Excel происходит вот таким образом: excel = new COMExcelDocument_RU(); excel.newFile(#ReportTemplatePath_FileServer + "ApplicationFSS.xltx", false); excel.insertValue(bookmark, substr(_content, i, 1)); Подскажите, как все же еще можно переделать. Вставить значение можно так: X++: public void insertValue(BookMark _bookMark, anyType _anyVal, int _workSheet = 1) { COM comRange; ; this.checkExistDocument(); comRange = this.findRange(_bookMark, _workSheet); this.insertValueInRange(comRange, _anyVal); } X++: // Creates object range type named the same way as Excel bookmark // bookMark -> Excel bookmark name public COM findRange(PPO_MSOfficeBookMark bookMark, int _workSheet = 1) // was protected { COM comRange, comWorkSheet; COM comApplication; ; if (m_comDocument) { comWorkSheet = this.getWorkSheet(_workSheet); comApplication = m_comDocument.application(); comWorkSheet.activate(); if (comWorkSheet && comApplication) { comRange = comApplication.range(bookMark); } } return comRange; } X++: // Exporting value in Range object // comRange -> Range object // anyVal -> Varible for export to Range object protected void insertValueInRange(COM _comRange, anyType _anyVal) { _comRange.value2(_anyVal); }
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: Logger (1). |
Теги |
документация, com-объект |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|