Windows10のコマンドプロンプトにおいて、
ある実行ファイルの実行結果をExcel VBAでWshShellを使って取得しようとしているのですが
うまく行きません。
下記コードでfncWinScriptが空になります。
コマンドプロンプトでの手動実行では、実行完了までに1分10秒程度掛かりますが、
下記コードでも同じくらいの時間で返ってきますので、実行完了はしていると思われます。
コマンドプロンプトでの手動実行では、
数字がインクリメントされたりの進捗表示があってから
(ここが曲者ではないかと考えています)、
2400行程度の結果が出力されます。
output = output & wExec.StdOut.Read(1)
は、これが無いとStatusが0のままループを抜けないので、入れています。
outputには上記進捗表示の表示履歴が入っているようです。
Excel
1Public Function fncWinScript(実行パス As String, command As String) As String 2Dim WSH As WshShell 3Dim wExcec As Object 4Dim output As String 5 6Set WSH = New WshShell 7Set wExec = WSH.Exec("%ComSpec% /c " & "set LESSCHARSET=utf-8 && cd " & 実行パス & " && " & command) 8 9Do While wExec.Status = 0 10 output = output & wExec.StdOut.Read(1) 11 DoEvents 12Loop 13 14Sleep(1000) 15DoEvents 16 17fncWinScript = wExec.StdOut.ReadAll() 18 19Set wExec = Nothing 20Set WSH = Nothing 21 22End Function
何か分かりましたらアドバイス頂きたくよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/19 13:19
2021/06/19 13:31
2021/06/20 04:27
2021/06/20 07:06
2021/06/20 07:48