2017-10-05 128 views
5

我打開非Excel文件像一些簡單的Excel VBA代碼:打開一個文件,其名稱中包含空格

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 

我得到:

enter image description here

兩個文件開放的罰款,如果我使用Run命令從Windows開始菜單。我如何克服這個問題?

+0

嘗試把一個或兩個反斜線空間之前,在名稱使用 –

+4

'objshell.Run(「」「C:\ TestFolder \博OK1。 pdf「」「)',以便文件名用引號引起來。否則它認爲你正在運行'C:\ TestFolder \ Bo.exe',其參數爲'ok1.pdf' – YowE3K

+0

@MykolaShchetinin感謝您的建議,但是斜線或反斜線都沒有任何影響。 –

回答

8

當執行該語句objshell.Run ("C:\TestFolder\Bo ok1.pdf"),你問的shell執行

C:\TestFolder\Bo ok1.pdf 

這被解釋爲與ok1.pdf參數執行程序C:\TestFolder\Bo.exe的請求命令。

你真正想要的shell執行命令

"C:\TestFolder\Bo ok1.pdf" 

其中引號命令解釋中使用的命令,以「組」部分組合在一起。

要獲得命令,則需要執行該語句

objshell.Run """C:\TestFolder\Bo ok1.pdf""" 
+0

哇,6票的時候指出你想要跳過一個引用的字符串,你需要加雙引號。說真的,這個以前沒有回答過? – Lankymart

+0

@Lankymart實際上並不是引號需要被轉義,而是引號需要被使用。 (如果您找到了一個好的複製品,請隨時關閉該問題,然後ping我,以便刪除答案。) – YowE3K

相關問題