03.02.2012, 20:03 | #19 |
Участник
|
Цитата:
X++: excel.closeDocument(false); PS: Кстати, для справки. В версии Ax2009 в классе ComExcelDocument_RU создали в ClassDeclaration переменную comWorkSheets. Однако в методе closeDocument() эта переменная не обнуляется. Отсюда возникают глюки после первого закрытия документа, поскольку не срабатывает метод getWorkSheets(), где как раз-таки этой переменной и должны присвоить значение. Для лечения "по быстрому" надо в методе ComExcelDocument_RU.closeDocument() после успешного закрытия документа добавить пару строчек X++: m_comDocument = null; comWorkSheets = null; X++: // Учет возможности работы с несколькими книгами в одном экземпляре Excel в классе ComExcelDocument_RU public void closeDocument(boolean _save = false, int _workBook = 1) { COM comWorkBooks; COM comWorkBook; // RTG, 19.12.2005, МВБ --> int countWorkBooks; // количество рабочих книг boolean isClosedSelectedWorkBooks; // Закрывается ли текущая рабочая книга // RTG, 19.12.2005, МВБ <-- try { if (m_comApplication) { m_comApplication.cutCopyMode(false); // 08.04.2004, Использование нескольких листов comWorkBooks = m_comApplication.workBooks(); // RTG, 19.12.2005, МВБ --> /* comWorkBook = comWorkBooks.item(_workBook); comWorkBook.close(_save); */ countWorkBooks = comWorkBooks.Count(); if (_workBook > 0 && _workBook <= countWorkBooks) { comWorkBook = comWorkBooks.item(_workBook); isClosedSelectedWorkBooks = (comWorkBook.name() == m_comDocument.name()); comWorkBook.close(_save); } if (isClosedSelectedWorkBooks) { countWorkBooks = comWorkBooks.Count(); if (countWorkBooks) { m_comDocument = comWorkBooks.Item(countWorkBooks); } else { m_comDocument = null; comWorkSheets = null; } } // RTG, 19.12.2005, МВБ <-- return; } } catch (Exception::Error) { exceptionTextFallThrough(); } catch(Exception::Internal) { exceptionTextFallThrough(); } error(this.getCOMErrorMsg()); if (comWorkBook) { comWorkBook.detach(); } if (comWorkBooks) { comWorkBooks.detach(); } }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... Последний раз редактировалось Владимир Максимов; 03.02.2012 в 20:37. |
|
|
За это сообщение автора поблагодарили: Maxim Gorbunov (2). |