【VBA】バッチファイルを同期実行する

ここではVBAから
 ・バッチファイルを
 ・同期実行する
方法を記載します!

PR

VBAコード

ここでは例として、
 ・デスクトップ配下のバッチファイル「test.bat」を
 ・同期実行
します。

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(batchPath, WaitOnReturn:=True)
    
    If (result = 0) Then
        MsgBox ("バッチファイルは正常終了しました。")
    Else
        MsgBox ("バッチファイルは異常終了しました。")
    End If
    
    '後片付け
    Set wsh = Nothing
    
End Sub

Run」メソッドの引数「WaitOnReturn」に「True」を指定することで、同期実行になります。
※「False(規定値)」を指定すると同期実行になります。

ここでいう「同期実行」とは、
 ・バッチファイルの処理完了後にVBAへ制御が返ってくるように実行
という意味です。
※バッチファイルの処理が完了するまでは、VBAの処理は停止して先に進みません。

バッチファイルが正常終了した場合、戻り値として「0」が返されます。
※異常終了の場合は「1」が返されます。

PR

実行結果

Windowsのバッチファイルを同期実行できました。

実行結果①
実行結果①
実行結果②(正常終了の場合)
実行結果②(正常終了の場合)
実行結果③(異常終了の場合)
実行結果③(異常終了の場合)
PR

参考①

上記のVBAコードでは使用していませんが、「Run」メソッドの引数「WindowStyle」の使用により、画面(コマンドプロンプト画面)を非表示にしたり最小化したりできます。

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

PR

参考②

VBAでコマンドプロンプトのコマンドを実行することもできます。

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

PR

参考③

VBAでコマンドプロンプトの実行結果を取得することもできます。

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

PR

参考④

VBAでPowerShellファイルを実行することもできます。

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

PR

参考⑤

VBAでVBScriptファイルを実行することもできます。

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

タイトルとURLをコピーしました