我正在尝试将变量替换为wsh.run命令中的路径(它应该启动一个批处理文件),但是在dos控制台中出现错误:“文件名,目录名或卷标语法不正确“。
以下代码有效:
Sub TestDos()
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim fBatFile As String
Dim ErrorCode As Integer
Dim wkPath As String
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
wkPath = Application.ActiveWorkbook.Path
fBatFile = wkPath & "\run.bat"
ErrorCode = wsh.Run("cmd.exe /c cd /d G:\Projects && G:\Projects\run.bat", windowStyle, waitOnReturn)
Debug.Print ErrorCode
End Sub
我尝试过:
ErrorCode = wsh.Run("cmd.exe /c cd /d wkPath && fBatFile", windowStyle, waitOnReturn)
或者:
ErrorCode = wsh.Run("cmd.exe /K cd /d " & wkPath & fBatFile & "", windowStyle, waitOnReturn)
但是它不起作用。 有人可以帮助我吗?
答案 0 :(得分:0)
我找到了解决方法:
ErrorCode = wsh.Run(“ cmd.exe / c cd / d”&wkPath&“ &&”&fBatFile, windowStyle,waitOnReturn)
我找不到清晰的网页来说明我们何时以及如何需要 “&”和“”。 官方文件对我来说很晦涩。
无论如何,即使这次,它也完成了!
P.S .:如果我使用“ cmd.exe / k”(我将dos控制台保持打开状态)而不是“ / c”,则VBA编辑器会给我一个“溢出”错误。幸运的是,我需要在批处理文件末尾关闭dos控制台。