I have some simple Excel VBA code that opens non-Excel files like:
Sub scriptTest()
Set objshell = CreateObject("Wscript.Shell")
objshell.Run ("C:\TestFolder\Book1.pdf")
Set objshell = Nothing
End Sub
Running this opens the file in the Acrobat Reader. However if I try to open a file whose name contains a space character like:
Sub scriptTest()
Set objshell = CreateObject("Wscript.Shell")
objshell.Run ("C:\TestFolder\Bo ok1.pdf")
Set objshell = Nothing
End Sub
I get:
Both files open fine if I use the Run command from the Windows Start menu. How can I overcome this problem ??
When executing the statement objshell.Run ("C:\TestFolder\Bo ok1.pdf"), you are asking the shell to execute the command
C:\TestFolder\Bo ok1.pdf
This is interpreted as being a request to execute the program C:\TestFolder\Bo.exe with a parameter of ok1.pdf.
You actually want the shell to execute the command
"C:\TestFolder\Bo ok1.pdf"
where the quotation marks are used by the command interpreter to "group" parts of the command together.
To obtain that command, you need to execute the statement
objshell.Run """C:\TestFolder\Bo ok1.pdf"""
来源:https://stackoverflow.com/questions/46593437/opening-a-file-whose-name-contains-a-space
