![](https://excel-vba.work/wp-content/themes/cocoon-master/images/b-woman.png)
VBScriptから
・VBAのプロシージャを実行
できます!
![](https://excel-vba.work/wp-content/themes/cocoon-master/images/b-woman.png)
VBScriptからVBAを実行するには
・Run “モジュール名.プロシージャ名“
と記述します!
※プロシージャ名だけでなくモジュール名も記述する必要があります。
![](https://excel-vba.work/wp-content/themes/cocoon-master/images/b-woman.png)
モジュール名を記述しないと
エラーになります!
※モジュール名の記述漏れに気を付けましょう。
VBAのコード
ここでは例として、
・デスクトップ配下のExcelファイル「sampl_001.xlsm」の
・モジュール「testModule」に
・Subプロシージャ「sample」
を作成します。
![VBAコードを作成するExcelファイル](https://excel-vba.work/wp-content/uploads/2021/04/vba_vbscriptcallvba_002.png)
![モジュール「testModule」のSubプロシージャ「sample」](https://excel-vba.work/wp-content/uploads/2021/04/vba_vbscriptcallvba_001.png)
Sub sample()
'メッセージ出力
MsgBox ("VBAからのメッセージ出力です!")
End Sub
VBScriptのコード
ここでは例として、
・上記で作成したVBAコードを実行する
・VBScriptファイルを作成
します。
![作成するVBScriptファイル](https://excel-vba.work/wp-content/uploads/2021/04/vba_vbscriptcallvba_005.png)
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
「モジュール名」の記述が無いと以下のエラーが発生します。
マクロ ‘XXX’ を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。
![エラーメッセージ](https://excel-vba.work/wp-content/uploads/2021/04/vba_vbscriptcallvba_004.png)
このエラーメッセージからエラー理由を特定するのは難しいです。
エラーが発生しないように「モジュール名」の記述漏れには気を付けましょう。
実行結果
上記で作成したVBScriptファイル「excel_vba実行サンプル.vbs」を実行すると、VBScriptからVBAのプロシージャが実行できたことを確認できます。
![実行結果](https://excel-vba.work/wp-content/uploads/2021/04/vba_vbscriptcallvba_003.png)
参考①
VBAのプロシージャを実行する以外にも、Excelファイルの各種操作をVBScriptから実行できます。
詳細は公式サイトをご確認ください。
参考②
VBScriptからではなく、VBAから他のブックのマクロ(VBAコード)を実行することもできます。
詳細は以下の記事をご確認ください。
参考③
Power ShellからVBAのプロシージャを実行することもできます。
詳細は以下の記事をご確認ください。
参考④
バッチファイルからVBAのプロシージャを実行することもできます。
詳細は以下の記事をご確認ください。
参考⑤
タスクスケジューラからマクロを自動実行することもできます。
詳細は以下の以下の記事をご確認ください。
参考⑥
逆に、VBAからVBScriptを実行することもできます。
詳細は以下の記事をご確認ください。