27.05.2015, 15:28 | #11 |
Участник
|
Вы бы сделали хотя бы поиск по данному форуму по ключевому слову "ComDispFunction". Есть масса примеров его использования.
В данном конкретном случае решение будет выглядеть так: Сначала коллекция листов (рабочая книга. Файл Excel) X++: // Метод getWorkSheets() private COM getWorkSheets() { ComVariant varRet; ComDispFunction funcGet; ; if (!comWorkSheets && m_comDocument) { try { /* comWorkSheets = m_comDocument.worksheets(); */ funcGet = new ComDispFunction(m_comDocument, "worksheets", COMDispContext::PropertyGet); varRet = new COMVariant(COMVariantInOut::OUT_RETVAL, COMVariantType::VT_DISPATCH); funcGet.call(varRet); comWorkSheets = COM::createFromInterface(varRet.iDispatch()); } catch (Exception::Error) { throw error("@GEE6043"); } } return comWorkSheets; } X++: private COM getWorkSheet(anytype _workSheetID) { COM comRet; ComVariant varRet; ComDispFunction funcGet; COMVariant varArgStr; COMVariant varArgInt; ; if (m_comDocument) { try { this.getWorkSheets(); /* comRet = comWorkSheets.item(_workSheetID); */ funcGet = new ComDispFunction(comWorkSheets, "item", COMDispContext::PropertyGet); varRet = new COMVariant(COMVariantInOut::OUT_RETVAL, COMVariantType::VT_DISPATCH); switch (typeOf(_workSheetID)) { case types::String : varArgStr = new COMVariant(COMVariantInOut::In, COMVariantType::VT_BSTR); varArgStr.bStr(_workSheetID); funcGet.call(varArgStr, varRet); break; case types::Integer : varArgInt = new COMVariant(COMVariantInOut::In, COMVariantType::VT_INT); varArgInt.int(_workSheetID); funcGet.call(varArgInt, varRet); break; default : throw error('Не корректный тип параметра'); break; } // switch (typeOf(_workSheetID)) comRet = COM::createFromInterface(varRet.iDispatch()); } catch (Exception::Error) { throw error("@GEE6043"); } } return comRet; }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: AlGol (2), NeveB (1), Logger (7), Ace of Database (5), ena_ax (1), Sergey Petrov (1), at5454 (1). |
Теги |
com-объект, comdispfunction, excel, excel com формат, законченный пример, полезное |
|
|