我正在嘗試從 VBA 運行一個簡單的 cmd 行,但我遇到了問題。基本上,命令列呼叫 createReport.exe,它使用 Inputfile.csv 創建最終的 CSV 輸出檔案
這是我從命令提示符視窗手動運行的:
cd C:\Users\user123\Desktop\MyReport_folder(按回車鍵)
createReport.exe -in=C:\Users\user123\Desktop\MyReport_folder\Inputfile.csv(按回車鍵)
當我手動運行時,一切正常,創建最終的 CSV 輸出檔案大約需要 45 秒。但是當我從 vba macro 運行相同的東西時,螢屏顯示開始查詢步驟,它會持續 30 秒,然后關閉并且不會創建最終的 CSV 輸出檔案。
我在這里的代碼中缺少什么?
Sub RunReport()
Application.DisplayAlerts = False
Dim strProgramName As String
Dim strArgument As String
strProgramName = "C:\Users\user123\Desktop\MyReport_folder\createReport.exe"
strArgument = "-in=C:\Users\user123\Desktop\MyReport_folder\Inputfile.csv"
Call Shell("""" & strProgramName & """ """ & strArgument & """", vbMaximizedFocus)
Application.DisplayAlerts = True
End Sub
上面的查詢呼叫命令提示符,運行,但在 30 秒后停止,圖片中的第 1 步顯示“正在啟動查詢步驟...”(而如果我從 cmd 視窗手動運行該程序完美運行)

感謝您的幫助。謝謝。
uj5u.com熱心網友回復:
我相信您首先需要ChDir在呼叫Shell()命令之前執行 a ,例如:
ChDir "C:\Users\user123\Desktop\MyReport_folder"
Call Shell("""" & strProgramName ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/460539.html
