如何在VBA执行.exe后保持PowerShell控制台开启?
解决PowerShell控制台执行exe后自动关闭的问题
我来帮你搞定这个问题!当你直接通过VBA的Shell调用exe程序时,进程执行完毕后控制台窗口会因为没有后续指令而自动关闭,导致你没法查看输出结果。这里有两个简单有效的方案,帮你让控制台保持打开状态:
方案一:通过CMD启动exe并保持窗口
利用CMD的/k参数,它会在执行指定命令后保持CMD窗口不关闭。修改你的VBA代码如下:
Sub Button_run_st() Dim strPName As String Dim strA As String strPName = Range("C14").Text strA = "--dd=" & Application.ActiveWorkbook.Path ' 使用cmd /k 启动exe,执行完成后保持窗口 Call Shell("cmd /k """ & strPName & """ " & strA, vbNormalFocus) End Sub
关键说明:
cmd /k:告诉CMD执行完后面的命令后不要关闭窗口""" & strPName & """:如果你的exe路径包含空格,必须用双引号包裹路径,这里用三个双引号是VBA里的转义写法,最终会生成一个双引号vbNormalFocus:让控制台窗口获得焦点,方便你直接查看输出内容
方案二:通过PowerShell启动并保持窗口
如果你更倾向于使用PowerShell环境,可以用-NoExit参数让PowerShell执行完命令后不退出:
Sub Button_run_st() Dim strPName As String Dim strA As String strPName = Range("C14").Text strA = "--dd=" & Application.ActiveWorkbook.Path ' 使用PowerShell -NoExit 保持窗口打开 Call Shell("powershell -NoExit -Command """ & strPName & """ " & strA, vbNormalFocus) End Sub
关键说明:
-NoExit:PowerShell的核心参数,强制窗口在命令执行完毕后保持打开-Command:指定要执行的命令(也就是你的exe程序和参数)
注意事项
不管用哪个方案,如果你的exe文件路径或者工作簿路径包含空格,一定要确保路径被双引号包裹,否则会出现“找不到文件”的错误。上面的代码已经帮你处理了这个情况,直接用就好。
内容的提问来源于stack exchange,提问作者srgam
相关产品推荐
相关产品推荐

