我无法执行位于运行宏的excel表当前目录内的文件夹中的bat文件。
我现在有这个。
Shell "cmd.exe /k cd /d" & ThisWorkbook.PATH & " && Comms.BAT"
如果BAT文件位于当前目录中,我希望它从位于目录中的文件夹运行,例如
Curr Dir \ Comms \ Comms.BAT
我试过这个
Shell "cmd.exe /k cd /d" & ThisWorkbook.PATH & " && \Comms\Comms.BAT"
和这个
Shell "cmd.exe /k cd /d" & ThisWorkbook.PATH & "\Comms\Comms.BAT"
答案 0 :(得分:1)
您的第一个示例似乎是使用绝对路径(\ Comms):
Shell "cmd.exe /k cd /d" & ThisWorkbook.PATH & " && \Comms\Comms.BAT"
尝试使用相对路径:
Shell "cmd.exe /k cd /d" & ThisWorkbook.PATH & " && .\Comms\Comms.BAT"
<强>更新强>
...如果我使用你的例子然后尝试从当前目录执行批处理,它需要从cur dir / Comms /
执行它
如果我理解正确,您的批处理文件需要当前工作目录为包含批处理文件的目录。在这种情况下,您有两种选择:
切换到包含批处理文件的目录:
Shell "cmd.exe /k cd /d" & ThisWorkbook.PATH & "\Comms && Comms.BAT"
更改批处理文件以切换到正确的目录。您可以通过将以下行添加到Comms.BAT顶部来执行此操作:
cd /d "%~dp0"
更新2
如果包含工作簿的路径可以包含空格,则需要在命令行中添加引号,如AnalystCave.com的答案中所述。例如:
Shell "cmd.exe /k cd /d """ & ThisWorkbook.PATH & "\Comms"" && Comms.BAT"
答案 1 :(得分:0)
试试这个:
Set wsh = VBA.CreateObject("WScript.Shell")
wsh.Run """" & ActiveWorkbook.Path & "\Comms\Comms.BAT" & """"
Set wsh = Nothing
额外&#34;是为了防止文件名带有空格的问题。