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

VBAから
コマンドプロンプトのコマンドを実行して、

コマンドプロンプト(pingコマンド)の実行結果
コマンドプロンプト(pingコマンド)の実行結果


その結果を
VBAで取得できます!

pingコマンドの実行結果を取得
pingコマンドの実行結果を取得
PR

VBAコード

ここでは例として、
 ・コマンド「ping 192.168.10.1」を実行して
 ・結果を取得
します。

'変数の宣言を必須
Option Explicit

Sub sample()

    Dim command As String
    Dim wsh As Object
    Dim execObj As Object
    Dim commandResult As String
    
    '実行するコマンドを指定
    command = "ping 192.168.10.1"
    
    Set wsh = CreateObject("WScript.Shell")
    
    'コマンドを実行
    Set execObj = wsh.exec("%ComSpec% /c " & command)
    
    '実行したコマンドが完了するまで待つ
    Do While execObj.Status = 0
        'コマンド実行中にExcelファイルを操作できるようにする
        'DoEvents
    Loop

    'コマンドの実行結果を取得
    commandResult = execObj.stdOut.ReadAll
    
    'コマンドの実行結果を表示
    MsgBox commandResult
    
    '後片付け
    Set execObj = Nothing
    Set wsh = Nothing
    
End Sub

実行したコマンドが完了するまで待つために、「Status」が「0」の間はループさせています(20行目)。

コマンド実行中にExcelファイルを操作できるようにしたい場合は、ループ処理の中で「DoEvents」を実行します(22行目)。
※上記ではコメントアウトしています。
※コマンドの完了に時間が掛かる場合は、「DoEvents」を実行しても良いと思います。

PR

実行結果

コマンドプロンプトの実行結果を取得できました。

実行結果
実行結果
PR

参考

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

●「WScript.Shell」の「exec」メソッド


●「WScript.Shell」の「Status」プロパティ


●「WScript.Shell」の「stdOut」プロパティ

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