VC++ でEXCELの操作 2008/09/19


・DIALOGかSDI、MDI形式にしてオートメーションにチェック入れてプロジェクト作成。
・EXCEL2000の場合は、 #import "C:\Program Files\Microsoft Office\Office\mso9.dll" no_namespace rename("DocumentProperties", "DocumentPropertiesXL") #import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\vbe6ext.olb" no_namespace #import "C:\Program Files\Microsoft Office\Office\excel9.olb" rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") rename("DocumentProperties", "DocumentPropertiesXL") no_dual_interfaces をインポート。環境により多少違いあり。 using namespace Excel; try {  _ApplicationPtr pXL;  pXL.CreateInstance(L"Excel.Application");  pXL->Visible = TRUE;  WorkbooksPtr pBooks = pXL->Workbooks;  _WorkbookPtr pBook = pBooks->Open("C:\\TSテンプレート.xls");//テンプレとなるXLS  _WorksheetPtr pSheet = pBook->Worksheets->Item[(short)3]; // 3番目のシートを使用  pSheet->Select((short)3); pSheet->Range["C3"]->Value = "testdata"; // C3の場所に書き込み pSheet->PrintOut(); // 印刷 pXL->DisplayAlerts = FALSE; // アラート停止 Sleep(350); pXL->Quit(); // excel 消す pXL = NULL; } catch (_com_error ){} 罫線など入れたテンプレとなるXLSを作成しておいて適当なセルにデータ入れて印刷。 これで面倒な印刷から開放される。 10数回繰り返すと例外出たので try AND catchで例外対処した方が安全かも。 その場合は、 MSアクセスにSELECT掛けると直った。 comが初期化されるから? また、あるservicesが停止しているとEXCELが起動しない。pXL->Visible = TRUE で例外発生。
戻る