在VBA中使用'wsh.Run'在文件路径中使用空格

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

标签: excel vba escaping filepath

我在使用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

任何建议或帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

将此用于您的cmd1

cmd1 = """""" & firstFilePath & """ -s:""" & strFilePath & """ -xsl:""" & secondFilePath & """ -o:""" & outfile & ".csv"" > """ & logfile & """ 2>&1"""