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. | 環境 | バージョン |
---|---|---|
1 | OS | Windows11 |
2 | Word | Word2016 |
3 | PowerShell | 5.1 |
以上です。