【VBA】PowerShellファイルを同期実行する

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

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

PR

PowerShellのコード

ここでは例として、
 ・「PowerShellからのメッセージ出力です!」というメッセージを出力する
 ・「test.ps1」を作成
します。

$ws = new-object -comobject wscript.shell
$result = $ws.popup("PowerShellからのメッセージ出力です!")
PowerShellファイル
PowerShellファイル
PR

VBAのコード

ここでは例として、
 ・上記で作成したPowerShellのファイル「test.ps1」を
 ・同期実行
します。
※ここでは作成したPowerShellのファイル「test.ps1」をデスクトップ配下に配置しています。

'変数の宣言を必須
Option Explicit

Sub execPsFile()
    
    Dim psFile As String
    Dim execCommand As String
    Dim wsh As Object
    Dim result As Integer
    
    'PowerShellファイルのパスを指定
    psFile = "C:\Users\user\Desktop\test.ps1"
    
    Set wsh = CreateObject("WScript.Shell")
    
    '実行するコマンドを組み立て
    execCommand = "powershell -NoProfile -ExecutionPolicy Unrestricted " & psFile
    
    'PowerShellを実行
    result = wsh.Run(command:=execCommand, WindowStyle:=0, WaitOnReturn:=True)
    
    If (result = 0) Then
        MsgBox ("Power Shellファイルは正常終了しました。")
    Else
        MsgBox ("Power Shellファイルは異常終了しました。")
    End If
    
    '後片付け
    Set wsh = Nothing
    
End Sub

「PowerShellファイルのパス」を指定します(12行目)。

Run」メソッドの引数に「WindowStyle」に「0」を指定することで、PowerShell画面を表示にできます(20行目)。
※「1(規定値)」を指定すると表示になります。

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

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

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

PR

実行結果

PowerShellファイルを同期実行できました。

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

参考①

PowerShellファイルだけでなく
 ・PowerShellのコマンドレットを実行
することもできます。

以下の記事は「PowerShellのコマンドレットを実行」して、当該処理を実現しています。


PR

参考②

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

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

PR

参考③

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

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

PR

参考④

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

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

PR

参考⑤

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

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

PR

参考⑥

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

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

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