【VBA】コマンドプロンプトのコマンドを実行する

VBAから
 ・コマンドプロンプトのコマンドを実行
できます!

ここでは
 ・コマンドプロンプト画面は表示
 ・コマンドを同期実行
する方法を記載します!

コマンドの実行結果も
取得できます!
※正常終了の場合、実行結果は「0」になります。
※異常終了の場合、実行結果は「1」になります。

PR

VBAコード

ここでは例として
 ・コマンド「mkdir C:\Users\user\Desktop\folder001」を
 ・コマンドプロンプト画面は非表示で
 ・同期実行
します。
※「mkdir」コマンドを実行して「フォルダを作成」します

ここでいう「同期実行」とは、「コマンドの処理完了後にVBAへ制御が返ってくるように実行する」という意味です。

'変数の宣言を必須
Option Explicit

Sub excePromptCmd()

    Dim execCommand As String
    Dim wsh As Object
    Dim result As Integer
    
    '実行するコマンドを指定
    execCommand = "mkdir C:\Users\user\Desktop\folder001"
    
    Set wsh = CreateObject("WScript.Shell")
    
    'コマンドを同期実行
    result = wsh.Run(command:="%ComSpec% /c " & execCommand, WindowStyle:=0, WaitOnReturn:=True)
    
    If (result = 0) Then
        MsgBox ("コマンドは正常終了しました。")
    Else
        MsgBox ("コマンドは異常終了しました。")
    End If
    
    '後片付け
    Set wsh = Nothing
    
End Sub

「実行するコマンド」を指定します(11行目)。

「wsh.Run」の引数について補足します(16行目)。

「%ComSpec%」・・・コマンドプロンプトの実行ファイルのパスを示します。
「/c」・・・・・・・・Cドライブを示します。Cドライブ以外の指定も可能です。
「WindowStyle」・・・「0」を指定により、コマンドプロンプト画面を表示にします。
「WaitOnReturn」・・「True」を指定により、コマンドを同期実行にします。

「%ComSpec%」の実態は「C:\WINDOWS\system32\cmd.exe」です。
コマンドプロンプトで「echo %ComSpec%」を実行すると確認できます。

「%ComSpec%」の実態
「%ComSpec%」の実態

コマンドが正常終了した場合、「戻り値(実行結果)」として「0」が返されます(16~22行目)。
※異常終了の場合は「1」が返されます。

PR

実行結果

コマンドプロンプトのコマンドを実行できました。
「mkdir」コマンドの実行により、デスクトップ配下にフォルダ「folder001」が作成されました。

実行結果①
実行結果①
実行結果②
実行結果②
PR

参考①

上記のVBAコードで使用した「WScript.Shell」の「Run」についての詳細は、公式サイトをご確認ください。

PR

参考②

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

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

PR

参考③

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

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

PR

参考④

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

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

PR

参考⑤

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

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

PR

参考⑥

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

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

PR

参考⑦

逆に
 ・Power ShellファイルからVBAを実行
することもできます。

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

PR

参考⑧

逆に
 ・VBScriptファイルからVBAを実行
することもできます。

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