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

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

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

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

準備

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

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

仕様

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

テストで実行するPowerShellのコマンドはなんでもよいのですが、ここでは「Rename-Item」にしてみましょう。

マクロファイル(xlsm)と同じディレクトリにファイル「File1.txt」を置き、マクロからPowerShell経由でファイル名を変更してみます。


マクロを実行したらファイル名が、「File1.txt」から「File2.txt」になります。

見出し

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

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

ソースコード

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

runPowerShell.xlsm

Option Explicit
Sub runPowerShell(psCmd As String)
    
    Dim objWSH As Object
    Set objWSH = CreateObject("WScript.Shell")
    
    ' PowerShell実行
    objWSH.Run psCmd, 0, True
    
End Sub

Sub test1() ' PowerShellを実行する(戻り値なし)
    
    Dim currentPath As String
    currentPath = ThisWorkbook.Path
    
    'Reame-Item
    runPowerShell ("powershell Rename-Item " & currentPath & "\File1.txt File2.txt")
    
End Sub

実行

実行方法

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

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

実行結果

マクロを実行すると、File1.txtがFile2.txtになっていることが分かります。

無事PowerShellが実行されたようです。

参考情報

環境

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

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

以上です。