ExcelのVBAからPowerShellスクリプト(.ps1)を実行する基本的な事例です。
PowerShellを用いると簡単に自動化できることがあるので、今回は作成したPowerShellスクリプトを実行する基本的な事例です。
単なるPowerShellスクリプト(.ps1)の実行ではなく、PowerShellを実行して値を取得したい場合の事例は、【Excel VBA】PowerShellを実行して値を取得する事例(Base64エンコード) - shikumika’s diary に記載しています。
内容:
動作確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2501)です。
VBAサンプル
VBAのサンプルは次のとおりです。
Function PowerShellスクリプトの実行() Dim objShell As Object Dim scriptPath As String ' PowerShellスクリプトのパスを指定' scriptPath = "C:\Users\xxxxx\abcdef.ps1" ' シェルオブジェクトを作成' Set objShell = CreateObject("WScript.Shell") ' PowerShellスクリプトを実行' objShell.Run "powershell -ExecutionPolicy Bypass -File """ & scriptPath & """", 1, True ' オブジェクトの解放' Set objShell = Nothing End Function
補足説明
objShell.Run "powershell -ExecutionPolicy Bypass -File """ & scriptPath & """", 1, True
について補足です。
-ExecutionPolicy Bypass:
PowerShellの実行がブロックされることを一時的に回避しています。
セキュリティのために既定の設定はスクリプトの実行が制限されています。このオプションを指定することで、スクリプトの実行を許可しています。
True:
スクリプトの実行が完了するまで待機を意味します。
逆にFalseを指定すると、スクリプトの実行を待たずに次のコードが実行されます。
PowerShellを実行して値を取得したい場合
以上、Excel VBAを利用し、PowerShellスクリプト(.ps1)を実行する基本的な事例でした。