VBAからPowerShellのコマンドを実行するサンプルコード(戻り値を取得するパターン)

記事内に広告が含まれています。

VBAからPowerShellのコマンドを実行するサンプルコードを2パターン作成してみました。

この記事ではそのうちの戻り値を取得するパターンを紹介します。

準備

事前準備として、VBAからPowerShellコマンドを実行するには以下の設定が必要です。

  • ツールバーから「参照設定」を選択
  • 「Windows Script Host Object Model」のライブラリファイルにチェックを入れます。

仕様

VBAからPowerShellコマンドを呼び出します。

PowerShellのコマンドはなんでもよいのですが、「Get-Date」にして結果をVBAのMsgBox関数で表示してみます。

見出し

念のため補足しますが、実現している処理自体はVBAからPowerShellを経由する必要性はありません。

マクロからPowerShellを実行する方法をテストするためにやっています。

ソースコード

WScript.ShellのExecメソッドにより、powershellのコマンドを実行しています。

execPowerShell.xlsm

Option Explicit

Function execPowerShell(psCmd As String)
    
    Dim objWSH As Object
    Set objWSH = CreateObject("WScript.Shell")
    
    
    ' PowerShell実行
    Dim objwExec As WshExec
    Set objwExec = objWSH.Exec("%ComSpec% /c " & psCmd)
    
    ' 実行完了待機
    Do While objwExec.Status = 0
        DoEvents
    Loop
    
    ' 実行結果の返却
    execPowerShell = objwExec.StdOut.ReadAll

End Function
Sub test1() ' PowerShellを実行する(戻り値あり)
    
    
    'Get-Dateを実行し、結果を表示する
    Dim result As String
    result = execPowerShell("powershell Get-Date")
    MsgBox result
    
End Sub

実行

実行方法

メニューバーからマクロの一覧を開くと、ソースコード上のtest1が表示されます。

よって、test1関数を選択し実行します。

実行結果

実行するとメッセージボックスで現在時刻が返ってきました。

PowerShellで取得した日時をVBAのメッセージボックスで表示しています。

参考情報

環境

下記の環境で作成・実行しております。

No.環境バージョン
1OSWindows11
2WordWord2016
3PowerShell5.1
環境一覧

以上です。

コメント