运行 使用 VBA 来自 CMD 的 Exe 文件 Excel

Running Exe File from CMD using VBA Excel

我正在尝试 运行 来自 VBA 的简单 cmd 行,但我遇到了问题。基本上,命令行调用 createReport.exe 使用 Inputfile.csv

创建最终的 CSV 输出文件

这是我在命令提示符下手动 运行 window :

cd C:\Users\user123\Desktop\MyReport_folder (hits enter)

createReport.exe -in=C:\Users\user123\Desktop\MyReport_folder\Inputfile.csv (hits enter)

当我手动 运行 时,一切正常,创建最终 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

上面的查询调用命令提示符,运行s,但在图片中显示“开始查询步骤...”的步骤 1 30 秒后停止(而过程 运行如果我从 cmd 运行 手动 window)

就完美了

感谢您的帮助。谢谢。

我相信您首先需要在调用 Shell() 命令之前执行 ChDir,例如:

ChDir "C:\Users\user123\Desktop\MyReport_folder"
Call Shell("""" & strProgramName ...