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 で例外発生。
戻る