PowerShell VBAでPowerShellを実行して結果を取得する(Run編)【初実験編08】

2018-12-09

Excel(VBA)からPowerShellを実行して、結果をセルに出力してみる

 

今回は、前回目障りだったPowerShellの実行画面は非表示にして、実行結果も取得できるように工夫した実装を、Runメソッドを使った方法で試してみます。
Runメソッドを使うと、PowerShellの実行結果をテンポラリーファイルに保存する必要があるため、少し実装が膨らみますが、
処理の完了を待つことができるため、sleepを入れて処理が完了するのを監視する必要はありません。

前回同様に実行結果は、名前参照を設定した結果出力用のセルを準備し、そこに表示させるように実装します。
過去の投稿「Excel お手軽名前参照」を見て、結果出力用のセルに名前を付けます
(”testCell”という名前にしました)

Runメソッドを用いた実装

コマンドボタンを配置して、クリックイベントのSubプロシージャを実装します

今回、下の宣言は、標準モジュールのコード内でグローバルで持ちました。

クリックイベントではこんな感じ。

 RunPowerShell()の中身

コマンドを受けて、実行(結果はテンポラリー出力)し、出力結果を自ら読み込んで結果として返します

Rnuメソッド(Call objWshShell.Run()部分)は、非表示(0)かつ完了を待つ(True)引数で実行している。

PowerShell Treeをファイルにリダイレクトしてみた【初実験編01】
PowerShell 同一階層のファイル名一覧をテキストファイルにリダイレクトしてみる【初実験編02】
PowerShell 起動方法(Windows10)【初実験編03】
PowerShell ファイル名の一括置換【初実験編04】
PowerShell ファイル検索【初実験編05】
PowerShell 文字列検索【初実験編06】
PowerShell VBAでPowerShellを実行して結果を取得する(Exec編)【初実験編07】
PowerShell VBAでPowerShellを実行して結果を取得する(Run編)【初実験編08】
PowerShell UNIXのシェルやDOSコマンド【初実験編09】