- - PR -
VC++からExcelマクロを作成する方法
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-20 12:50
お世話になります。
ピボットテーブルをVC++にて作成したいと考えていますが、 資料が少なくどのように作成したらいいかわかりません。 当初、オートメーション機能を使った場合 VC++にてPivotTableWizardにて作成することを考えていましたが、 参考となる資料がまったくないため、VC++から開かれたExcelブックに直接マクロを 書き込み、それを実行させることを考え始めました。 以下は参考にしているVC++からのオートメーションによるマクロの呼び出しです。 COleVariant vWork,vWork2; _Application pXlsApp; Workbooks pXlsBooks; Modules pModules_tmp; //Excelを起動する pXlsApp.CreateDispatch("Excel.Application"); pXlsApp.m_bAutoRelease = TRUE; pXlsApp.SetVisible(TRUE); //画面表示を有効にする //Workbookを開く LPDISPATCH pWkBooks = pXlsApp.GetWorkbooks(); //起動したExcelのWorkbooksのディスパッチを取得 CString strFile = "C:\\BOOK2.XLS"; //開く pXlsBooks.AttachDispatch(pWkBooks,TRUE); pXlsBooks.Open((LPCTSTR)strFile); //使いやすいように、WorkBooksクラスのOpenメソッド引数は調整してあります。 //マクロ名を格納 vWork.SetString("BOOK2.XLS!Test",VT_BSTR); //実行マクロ名 vWork2.SetString("テストだよ〜ん。",VT_BSTR); //引数 //マクロ・シートをディスパッチを生成 pModules_tmp.CreateDispatch("Excel.Macrosheet"); pModules_tmp.m_bAutoRelease = TRUE; //マクロとExcelを結びつける。 LPDISPATCH pMacNam = pXlsApp.GetExcel4MacroSheets(); pModules_tmp.AttachDispatch(pMacNam,TRUE); //マクロの実行 vWork = pXlsApp.Run(vWork,vWork2); //Excelのマクロを実行 //使いやすいように、_ApplicationクラスのRunメソッドの引数の数を調整してあります。 //オブジェクトの解放 pModules_tmp.ReleaseDispatch(); //WorkBookを閉じる pXlsBooks.Close(); pXlsBooks.ReleaseDispatch(); //Excelを終了 pXlsApp.Quit(); pXlsApp.ReleaseDispatch(); C#やVB.NETではマクロを作成してExcelシートに記述する方法が見つかりましたが、 http://support.microsoft.com/default.aspx?scid=kb;JA;303872 VC++ではないため、どうやればいいのかを探しています。 何かサンプル、もしくは参考になるサイト、ご存知の方がいればお教えくださいませ。 よろしくお願いします。 | ||||||||
|
投稿日時: 2006-01-20 16:14
こんにちは。
上記のリンク先のC#コードをVC++のコードに翻訳してみました。 ご参考にどうぞ。 #MFCのサンプルコードを提示されていたので、今回はMFCを使ってみました。 #importディレクティブを使って記述することも可能です。 開発環境:Visual C++.net 2003 Office: Microsoft Excel 2000(Excel9.0)
|
1