shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel VBA】PowerShellスクリプト(.ps1)を実行する基本的な事例

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を実行して値を取得したい場合

PowerShellスクリプト(.ps1)の実行ではなく、PowerShellを実行して値を取得したい場合の事例は以下です。

shikumika.org

以上、Excel VBAを利用し、PowerShellスクリプト(.ps1)を実行する基本的な事例でした。