打开名称包含空格的文件

Gar*_*ent 7 excel vba wsh excel-vba

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

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

运行此命令会在Acrobat Reader中打开该文件.但是,如果我尝试打开一个名称包含空格字符的文件,例如:

Sub scriptTest()
    Set objshell = CreateObject("Wscript.Shell")
    objshell.Run ("C:\TestFolder\Bo ok1.pdf")
    Set objshell = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)

我明白了:

在此输入图像描述

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

Yow*_*E3K 11

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

C:\TestFolder\Bo ok1.pdf
Run Code Online (Sandbox Code Playgroud)

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

您实际上希望shell执行命令

"C:\TestFolder\Bo ok1.pdf"
Run Code Online (Sandbox Code Playgroud)

命令解释器使用引号将命令的某些部分"分组"在一起.

要获取该命令,您需要执行该语句

objshell.Run """C:\TestFolder\Bo ok1.pdf"""
Run Code Online (Sandbox Code Playgroud)