VB.NETからExcelファイルを開いてマクロを実行したい場合には、Process.Startメゾッドを使います。
例えば、下図の様な使い方をしたとします。
以下の様に記載するだけで、Excelファイルを開き、Excelが終了した時点でメッセージボックスが表示さます。
1 2 3 4 |
Dim My_Process As System.Diagnostics.Process = System.Diagnostics.Process.Start("C:\Test.xlsm") My_Process.WaitForExit() MsgBox("処理終わりました。", MsgBoxStyle.Information) |
しかし、既にExcelが起動している状況で実行すると必ずエラーになります。
「NullReferenceException はハンドルされませんでした。オブジェクト参照がオブジェクト インスタンスに設定されていません。」
EXCEL.exeとコマンド指定するとエラー回避できます。
また、スイッチを「読み込み専用」「起動時の画面を非表示」すると、対象のマクロを誤って上書きしてしまう事も防げます。
1 2 3 4 |
Dim My_Process As System.Diagnostics.Process = System.Diagnostics.Process.Start("EXCEL.exe", String.Format("/r /e ""{0}""", "C:\Test.xlsm")) My_Process.WaitForExit() MsgBox("処理終わりました。", MsgBoxStyle.Information) |