Excel VBA Shell 命令在文件路径中带有空格
Posted
技术标签:
【中文标题】Excel VBA Shell 命令在文件路径中带有空格【英文标题】:Excel VBA Shell command with spaces in file path 【发布时间】:2016-03-15 21:55:41 【问题描述】:Public Sub openEntryFiles()
Dim filePath, shellCommand, agingsEntry, invenEntry As String
filePath = Range("CustomerPath").Value2 & "\files\"
agingsEntry = "agings\entry_EP.bat"
invenEntry = "inven\entry_EP.bat"
shellCommand = """%ProgramFiles(x86)%\TextPad 5\TextPad.exe"" -r -q -u """ & filePath & agingsEntry & """ -u """ & filePath & invenEntry & """"
Debug.Print shellCommand
Shell shellCommand, 0
End Sub
我正在尝试编写一个子例程,它将运行一个在文件路径中带有空格的 shell 命令。我已经对使用多个引号进行了大量研究,但是每当我运行代码时,我仍然会收到一个找不到文件的错误。输出到立即窗口的调试打印内容如下:
"%ProgramFiles(x86)%\TextPad 5\TextPad.exe" -r -q -u "\\ablsgaat002\aclwin\Clients\*****\files\agings\entry_EP.bat" -u "\\ablsgaat002\aclwin\Clients\*****\files\inven\entry_EP.bat"
将该字符串复制到 shell 窗口中效果很好,但是,从 VBA 中的 Shell 命令运行它不起作用。我做错了什么?
【问题讨论】:
我认为您缺少字符串中的引号。立即窗口不应该输出没有"
字符的字符串吗?
@Santosh 如果没有 %ProgramFiles(x86)%\TextPad 5\TextPad.exe 周围的引号,该命令不会在 shell 窗口中运行。
这可能是需要转义的百分号。如果删除它们并提供完整路径,Excel VBA Shell 是否有效?
【参考方案1】:
使用Environ
函数获取特殊文件夹
pathSpecial = Environ("ProgramFiles(x86)")
shellCommand = """" & pathSpecial & "\TextPad 5\TextPad.exe"" -r -q -u """ & filePath & agingsEntry & """ -u """ & filePath & invenEntry & """"
【讨论】:
以上是关于Excel VBA Shell 命令在文件路径中带有空格的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 vba 的 shell() 运行带有参数的 .exe?
如何在excel vba中传递包含excel文件路径的字符串以访问vba