
VBAから
・バッチファイルを
・同期実行する
できます!

バッチファイルの実行結果も
取得できます!
バッチファイルのコード
ここでは例として、
・「バッチファイルを実行しました!」というメッセージを出力する
・「test.bat」を作成
します。
@echo off
echo バッチファイルを実行しました!
pause
rem 正常終了の場合、戻り値として「0」を返す
exit /b 0
rem 異常終了の場合、戻り値として「1」を返す
rem exit /b 1

VBAコード
ここでは例として、
・デスクトップ配下のバッチファイル「test.bat」を
・同期実行
します。
※ここでは先程作成したバッチファイル「test.bat」をデスクトップ配下に配置しています。
'変数の宣言を必須
Option Explicit
Sub execBatch()
Dim batchPath As String
Dim wsh As Object
Dim result As Integer
'バッチファイルのパスを指定
batchPath = "C:\Users\user\Desktop\test.bat"
Set wsh = CreateObject("WScript.Shell")
'バッチファイルを同期実行
result = wsh.Run(command:=batchPath, WaitOnReturn:=True)
If (result = 0) Then
MsgBox ("バッチファイルは正常終了しました。")
Else
MsgBox ("バッチファイルは異常終了しました。")
End If
'後片付け
Set wsh = Nothing
End Sub
実行結果
Windowsのバッチファイルを同期実行できました。



参考①
上記のVBAコードでは使用していませんが、「Run」メソッドの引数「WindowStyle」の使用により、画面(コマンドプロンプト画面)を非表示にしたり最小化したりできます。
詳細は公式サイトをご確認ください。
参考②
VBAでコマンドプロンプトのコマンドを実行することもできます。
詳細は以下の記事をご確認ください。
参考③
VBAでコマンドプロンプトの実行結果を取得することもできます。
詳細は以下の記事をご確認ください。
参考④
VBAでPowerShellファイルを実行することもできます。
詳細は以下の記事をご確認ください。
参考⑤
VBAでVBScriptファイルを実行することもできます。
詳細は以下の記事をご確認ください。
参考⑥
バッチファイルからVBAを実行することもできます。
詳細は以下の記事をご確認ください。