在VBA中执行脚本后退出Cmd窗口

时间:2019-02-07 07:06:14

标签: excel vba shell cmd

我想在执行脚本后退出CMD窗口(当前我正在通过在CMD窗口中编写exit来手动退出CMD,然后VBA继续运行)

Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
Dim errorCode As Long
errorCode = wsh.Run(sCmdline, windowStyle, waitOnReturn)

'-- Finally Run function Arguments ----- 
 errorCode = wsh.Run("cmd /k systeminfo >D:\Tools\MyScript\SystemInfo.txt", windowStyle, waitOnReturn)

If errorCode = 0 Then
    MsgBox "Done! No error to report."
    Set wsh = Nothing
Else
    MsgBox "Program exited with error code " & errorCode & "."
    Set wsh = Nothing
End If

2 个答案:

答案 0 :(得分:1)

打开cmd后,您似乎想关闭它。 /C标志在这里是最好的,因为它执行字符串指定的命令然后终止。

因此,您应该写:

errorCode = wsh.Run("cmd /c systeminfo >D:\Tools\MyScript\SystemInfo.txt", windowStyle, waitOnReturn)

这将起作用。

答案 1 :(得分:0)

在您的sCmdLine(问题中未定义)中,只需在末尾添加&& exit以在一行中一个接一个地执行命令。

如果您原来的命令是sCmdLine = "cmd.exe /S /K ping www.google.com",那么它将变成sCmdLine = "cmd.exe /S /K ping www.google.com && exit"