VBA中文件路径空间的处理

VBA中文件路径空间的处理,vba,ms-word,Vba,Ms Word,我有下面的VBA代码,我正试图在cmd中运行。路径中有一个空格,我用引号来处理它 strWot2Shell = """C:\Program Files\gs\gs9.20\bin\gswin64.exe""" & " -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -sOutputFile=" & Chr(34) & ripDirectory & "\LagerRiskRapport%01d.png" & Chr(34) &

我有下面的VBA代码,我正试图在
cmd
中运行。路径中有一个空格,我用引号来处理它

strWot2Shell = """C:\Program Files\gs\gs9.20\bin\gswin64.exe""" & " -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -sOutputFile=" & Chr(34) & ripDirectory & "\LagerRiskRapport%01d.png" & Chr(34) & " " & Chr(34) & filePathAndFileName & Chr(34)
strWot2Shell = Replace(strWot2Shell, "\", "/")
strWot2Shell2 = "cmd.exe /S /C " & strWot2Shell
wsh.Run strWot2Shell2, windowStyle, waitOnReturn
代码的输出如下所示:

cmd.exe /S /C "C:/Program Files/gs/gs9.20/bin/gswin64.exe" -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -sOutputFile="G:/Rip/LagerRiskRapport%01d.png" "G:/LagerRiskRapport.pdf"
当我在
cmd
中运行此目录时,我得到:

'C:/Program' is not recognized as an internal or external command,
operable program or batch file.
如果我直接在下面的
cmd
中运行,它会工作

"C:/Program Files/gs/gs9.20/bin/gswin64.exe" -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -sOutputFile="G:/Rip/LagerRiskRapport%01d.png" "G:/LagerRiskRapport.pdf"
三重引用所有字符串,如下所示:

strWot2Shell = """C:\Program Files\gs\gs9.20\bin\gswin64.exe""" & """ -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -sOutputFile=""" & Chr(34) & ripDirectory & """\LagerRiskRapport%01d.png""" & Chr(34) & " " & Chr(34) & filePathAndFileName & Chr(34)
给出此输出:

cmd.exe /S /C "C:/Program Files/gs/gs9.20/bin/gswin64.exe"" -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -sOutputFile=""G:/Rip"/LagerRiskRapport%01d.png"" "G:/LagerRiskRapport.pdf"
在诸如
“cmd.exe/S/C”
之类的引号中包围
cmd.exe/S/C
会导致
系统无法找到指定的路径


为什么引号不起作用?

这可能是因为您在开始时使用了三重引号,然后在结束时使用了三重引号。因此,尝试改变这一点:

"""C:\Program Files\gs\gs9.20\bin\gswin64.exe""" & " -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -sOutputFile=" & Chr(34) & ripDirectory & "\LagerRiskRapport%01d.png" & Chr(34) & " " & Chr(34) & filePathAndFileName & Chr(34)
致:


要使其可运行,输出应该是什么样子?如果您复制VBA输出并将其手动写入cmd,它运行正常吗?@vityta我已更新帖子。当我运行
cmd.exe/S/C,,.
它不工作,但运行
C:/Progrmas,,.
工作。你可以试试这个:
wsh.run=“cmd.exe/S/C”&strWot2Shell,windowStyle,waitOnReturn
@vitytai尝试了
cmd.exe
。这导致了一个错误。我已经用结果更新了问题。最后,我将
gswin64.exe
移动到路径中没有空格的路径。我尝试了一下,结果字符串中出现了引号,不应该有任何引号。我用结果更新了问题。好吧,我的错误,看起来应该是双引号而不是三引号。我已经更新了我的答案-看看这是否有效。
"""C:\Program Files\gs\gs9.20\bin\gswin64.exe""" & "" -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -sOutputFile="" & Chr(34) & ripDirectory & ""\LagerRiskRapport%01d.png"" & Chr(34) & " " & Chr(34) & filePathAndFileName & Chr(34)