人気ブログランキング | 話題のタグを見る
.Net(C#)アプリからExcelのVBAを呼び出したい(事前バインディング)
.NetアプリケーションからExcel2007のVBA(マクロ)標準モジュール内のサブプロシージャを呼び出す方法です。


まず、参照設定で、COMの Microsoft Excel 12.0 Object Library を追加します。
(12.0とかはExcelのバージョンで変わってきます。)

そして、下記のようなコードを書きます。(C#)
using Microsoft.Office.Interop.Excel;
 
//Excelマクロファイルパス
string strMacroPath = @"D:\test.xls";

 
//Excel操作用オブジェクト生成
ApplicationClass oExcel = new ApplicationClass();
//表示する
oExcel.Visible = true;
Workbooks oBooks = oExcel.Workbooks;

//Excelファイル開く
Workbook oBook = oBooks.Open(strMacroPath);
 
//マクロ実行(Testというサブプロシージャを動かす)
oExcel.Run("Test");
 
//終了処理(リソース解放)
oBook.Close(false);

System.Runtime.InteropServices.Marshal.ReleaseComObject(oBook);
oBook = null;
 
System.Runtime.InteropServices.Marshal.ReleaseComObject(oBooks);
oBooks = null;

 
oExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel);
oExcel = null;

簡単ですね。といってもほぼ参考先まるままですが。。
しかし、この方法ではExcel2007が入っているPCでしか実行できません。
例えばExcel2003が入っているPCとかだと、エラーとなります。
ということで、どのバージョンでのExcelでも実行できる方法は次の記事で書きます。

参考:
全ては時の中に… : 【VB.NET】VB.NETからExcelのVBA(マクロ)を実行する
by jehoshaphat | 2010-11-27 13:25 | .Net開発


<< .Net(C#)アプリからEx... (.Net).Netアプリケー... >>