【VBA】VBScriptからVBAのプロシージャを実行する

VBScriptから
 ・VBAのプロシージャを実行
できます!

VBScriptからVBAを実行するには
 ・Run “モジュール名.プロシージャ名“
と記述します!
※プロシージャ名だけでなくモジュール名も記述する必要があります。

モジュール名を記述しないと
エラーになります!
モジュール名の記述漏れに気を付けましょう。

PR

VBAのコード

ここでは例として、
 ・デスクトップ配下のExcelファイル「sampl_001.xlsm」の
 ・モジュール「testModule」に
 ・Subプロシージャ「sample」
を作成します。

VBAコードを作成するExcelファイル
VBAコードを作成するExcelファイル
モジュール「testModule」のSubプロシージャ「sample」
モジュール「testModule」のSubプロシージャ「sample」
Sub sample()
    'メッセージ出力
    MsgBox ("VBAからのメッセージ出力です!")
End Sub
PR

VBScriptのコード

ここでは例として、
 ・上記で作成したVBAコードを実行する
 ・VBScriptファイルを作成
します。

作成するVBScriptファイル
作成する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

「Excelオブジェクト」の「Workbooks.Open(“Excelファイルのパス“)」により、Excelファイルを開きます(9行目)。

「Excelオブジェクト」の「Run “モジュール名.プロシージャ名“」により、VBAのプロシージャを実行します(15行目)。
※「プロシージャ名」だけでなく、「モジュール名」も記述してください。記述しないとエラーが発生します。
※Subプロシージャ/Functionプロシージャのどちらも実行できます。


モジュール名」の記述が無いと以下のエラーが発生します。

エラー内容

マクロ ‘XXX’ を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。

エラーメッセージ
エラーメッセージ

このエラーメッセージからエラー理由を特定するのは難しいです。
エラーが発生しないように「モジュール名」の記述漏れには気を付けましょう。

PR

実行結果

上記で作成したVBScriptファイル「excel_vba実行サンプル.vbs」を実行すると、VBScriptからVBAのプロシージャが実行できたことを確認できます。

実行結果
実行結果

上記のメッセージボックスは、最背面(開いているファイル等の裏側)に表示されているかもしれません。

上記のメッセージボックスが表示されていないように見える場合は、最背面(開いているファイル等の裏側)をご確認ください。

PR

参考①

VBAのプロシージャを実行する以外にも、Excelファイルの各種操作をVBScriptから実行できます。

詳細は公式サイトをご確認ください。

PR

参考②

VBScriptからではなく、VBAから他のブックのマクロ(VBAコード)を実行することもできます。

詳細は以下の記事をご確認ください。

PR

参考③

Power ShellからVBAのプロシージャを実行することもできます。

詳細は以下の記事をご確認ください。

PR

参考④

バッチファイルからVBAのプロシージャを実行することもできます。

詳細は以下の記事をご確認ください。

PR

参考⑤

タスクスケジューラからマクロを自動実行することもできます。

詳細は以下の以下の記事をご確認ください。

PR

参考⑥

逆に、VBAからVBScriptを実行することもできます。

詳細は以下の記事をご確認ください。