我有一些简单的Excel VBA代码,可以打开非Excel文件,例如:

Sub scriptTest()
    Set objshell = CreateObject("Wscript.Shell")
    objshell.Run ("C:\TestFolder\Book1.pdf")
    Set objshell = Nothing
End Sub

运行它会在 Acrobat Reader 中打开文件。但是,如果我尝试打开名称包含 空格 字符的文件,例如:
Sub scriptTest()
    Set objshell = CreateObject("Wscript.Shell")
    objshell.Run ("C:\TestFolder\Bo ok1.pdf")
    Set objshell = Nothing
End Sub

我得到:

excel - 打开名称包含空格的文件-LMLPHP

如果我使用 Windows 开始菜单中的 Run 命令,这两个文件都可以正常打开。我怎样才能克服这个问题?

最佳答案

执行 objshell.Run ("C:\TestFolder\Bo ok1.pdf") 语句时,您是在要求 shell 执行命令

C:\TestFolder\Bo ok1.pdf

这被解释为使用 C:\TestFolder\Bo.exe 参数执行程序 ok1.pdf 的请求。

您实际上希望 shell 执行命令
"C:\TestFolder\Bo ok1.pdf"

命令解释器使用引号将命令的各个部分“组合”在一起。

要获得该命令,您需要执行该语句
objshell.Run """C:\TestFolder\Bo ok1.pdf"""

10-05 21:23