VBScriptから
・VBAのプロシージャを実行
できます!
VBScriptからVBAを実行するには
・Run “モジュール名.プロシージャ名“
と記述します!
※プロシージャ名だけでなくモジュール名も記述する必要があります。
モジュール名を記述しないと
エラーになります!
※モジュール名の記述漏れに気を付けましょう。
VBAのコード
ここでは例として、
・デスクトップ配下のExcelファイル「sampl_001.xlsm」の
・モジュール「testModule」に
・Subプロシージャ「sample」
を作成します。
Sub sample()
'メッセージ出力
MsgBox ("VBAからのメッセージ出力です!")
End Sub
VBScriptのコード
ここでは例として、
・上記で作成したVBAコードを実行する
・VBScriptファイルを作成
します。
Option Explicit
Dim objExcel
'Excelオブジェクトを取得
Set objExcel = CreateObject("Excel.Application")
'ExcelファイルをOPEN
objExcel.Workbooks.Open("C:\Users\user\Desktop\sampl_001.xlsm")
'Excelファイルを非表示
objExcel.Visible = False
'「testModule」のSubプロシージャ「sample」を実行
objExcel.Run "testModule.sample"
'Excelを終了
objExcel.Quit
'後片付け
Set objExcel = Nothing
「モジュール名」の記述が無いと以下のエラーが発生します。
このエラーメッセージからエラー理由を特定するのは難しいです。
エラーが発生しないように「モジュール名」の記述漏れには気を付けましょう。
実行結果
上記で作成したVBScriptファイル「excel_vba実行サンプル.vbs」を実行すると、VBScriptからVBAのプロシージャが実行できたことを確認できます。
参考①
VBAのプロシージャを実行する以外にも、Excelファイルの各種操作をVBScriptから実行できます。
詳細は公式サイトをご確認ください。
参考②
VBScriptからではなく、VBAから他のブックのマクロ(VBAコード)を実行することもできます。
詳細は以下の記事をご確認ください。
参考③
Power ShellからVBAのプロシージャを実行することもできます。
詳細は以下の記事をご確認ください。
参考④
バッチファイルからVBAのプロシージャを実行することもできます。
詳細は以下の記事をご確認ください。
参考⑤
タスクスケジューラからマクロを自動実行することもできます。
詳細は以下の以下の記事をご確認ください。
参考⑥
逆に、VBAからVBScriptを実行することもできます。
詳細は以下の記事をご確認ください。