質問者
複数あるCMDの実行結果をVBAを使い、Excel上に出力したい

質問
-
過去に類似した質問スレッドがございましたが、
対象スレッド
「PowerShellのコマンドの実行結果をマクロ(VBA)で受け取る事が出来るのでしょうか?」
それを認知した上で質問させてください。
AD上の情報を取得するためのコマンドを予めExcel上に複数行にわたり、書き出しておき、
それをVBA上にて吸い上げ、別シートに実行結果を書き出しがしたいです。
1つのコマンドではできましたが、複数行にわたり(複数のコマンドを)それを実行する方法が、まだ当方VBAを
学習したばかりの為、コードが分かりません。。
ご教授お願い致します。
※以下がそのコードです。
Sub testdmd()
'コマンドプロンプトを使うためのオブジェクト
Dim wsh As New IWshRuntimeLibrary.WshShell
Dim result As WshExec
Dim cmd As String
Dim filedata() As String
Dim i As Integer
'実行したいコマンド
With Worksheets("check") ⇒シート名
cmd = .Range("J8") ⇒CMDが記載されたセル ※&でつなげてもうまく別シートのセルへ書き出ししてくれません
End With
'コマンドを実行
Set result = wsh.Exec("%ComSpec% /c " & cmd)
'コマンドの実行が終わるまで待機
Do While result.Status = 0
DoEvents
Loop
'結果を改行区切りで配列へ格納
filedata = Split(result.StdOut.ReadAll, vbCrLf)
'A1から順番に結果を書き込む
With Worksheets("CMD1") ⇒結果を書き込む別シート
i = 1
For Each filenm In filedata
.Cells(i, 1).Value = filenm
i = i + 1
Next
End With
Set result = Nothing
Set wsh = Nothing
End Sub(ここまで)
すべての返信
-
こんな
Sub testdmd() 'コマンドプロンプトを使うためのオブジェクト Dim wsh As New IWshRuntimeLibrary.WshShell Dim result As WshExec Dim cmd As String Dim filedata() As String Dim i As Integer i = 1 Dim checkSheet As Worksheet Set checkSheet = Worksheets("check") '⇒シート名 Dim commandCell As Range 'コマンドの入っているセルを示すRange Set commandCell = checkSheet.Range("J8") '⇒CMDが記載されたセル Do While commandCell.Text <> "" 'セルにコマンドが入ってるなら繰り返す cmd = commandCell.Text '実行したいコマンド 'コマンドを実行 Set result = wsh.Exec("%ComSpec% /c " & cmd) 'コマンドの実行が終わるまで待機 Do While result.Status = 0 DoEvents Loop '結果を改行区切りで配列へ格納 filedata = Split(result.StdOut.ReadAll, vbCrLf) 'A1から順番に結果を書き込む With Worksheets("CMD1") '⇒結果を書き込む別シート Dim filenm As Variant For Each filenm In filedata .Cells(i, 1).Value = filenm i = i + 1 Next End With Set commandCell = commandCell.Offset(1, 0) '一行下のセルに進む Loop Set result = Nothing Set wsh = Nothing End Sub
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答の候補に設定 flingminMicrosoft contingent staff, Moderator 2020年2月13日 2:23
-
こんにちは。フォーラムオペレーターのFanです。
フォーラムにご投稿くださいましてありがとうございます.
gekkaさんからの返信は参考になったことで、よっかたです。
またアイコンのことですが、肖像権を侵害しているどうか判断できませんが、
よろしければ、論争を避けるためにそれをチェンジすることをお勧めします。
FanPlease remember to mark the replies as an answers if they help. If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com