我在使用WSH.run命令并转义文件路径中的空格时遇到了麻烦-它在没有空格的情况下工作正常!我曾尝试在每个参数/文件路径周围使用双引号,三引号和四引号,但是当从VBA脚本调用cmd shell时,它不喜欢文件路径。这是没有任何转义的脚本:
Dim strFilePath As String
Dim xslFilePath As String
Dim RetVal
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
firstFilePath = "C:\Program Files\myprogram.exe"
secondFilePath = "C:\Program Files\stylesheet.xsl"
strfilepath = "D:\outputfiles\out.xls"
outpath = Mid(strFilePath, InStrRev(strFilePath, "\") + 1)
outfile = Left(strFilePath, InStrRev(strFilePath, ".") - 1)
logfile = outfile & "_errors.log"
cmd1 = firstFilePath & " -s:" & strFilePath & " -xsl:" & secondFilePath & " -o:" & outfile & ".csv > " & logfile & " 2>&1"
wsh.Run "cmd /c /s" & cmd1, 2, True
当我通过带有转义的文件路径的命令行运行以下命令时,命令成功完成了,所以我不确定为什么在应用相同的转义符的情况下调用Excel时为什么此命令不起作用?
"C:\Program Files\myprogram.exe" -s:"D:\outputfiles\out.xls" -xsl:"C:\Program Files\stylesheet.xsl" -o:"D:\outputfiles\out.csv" > "D:\outputfiles\out_errors.log" 2>&1
任何建议或帮助表示赞赏。
答案 0 :(得分:1)
将此用于您的cmd1
行
cmd1 = """""" & firstFilePath & """ -s:""" & strFilePath & """ -xsl:""" & secondFilePath & """ -o:""" & outfile & ".csv"" > """ & logfile & """ 2>&1"""