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

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

バッチファイルの実行結果も
取得できます!
正常終了の場合、実行結果は「0」になります。
異常終了の場合、実行結果は「1」になります。

PR

VBAコード

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

@echo off

echo バッチファイルを実行しました!

pause
バッチファイル
バッチファイル
'変数の宣言を必須
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

「バッチファイルのパス」を指定します(11行目)。

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

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

バッチファイルが正常終了した場合、「戻り値(実行結果)」として「0」が返されます(16~22行目)。
※異常終了の場合は「1」が返されます。

PR

実行結果

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

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

参考①

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

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

PR

参考②

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

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

PR

参考③

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

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

PR

参考④

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

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

PR

参考⑤

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

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

PR

参考⑥

バッチファイルからVBAを実行することもできます。

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

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