2015-10-20 1795 views
0

我試圖運行一個簡單的VBScript示例(不是Excel宏)並且遇到了您輸入的名稱無效問題。「您輸入的名稱無效」與Excel錯誤

該名稱具有下劃線,沒有空格,並且工作簿是全新的(名稱管理器不顯示任何內容)。另外,雖然大多數Web示例顯示:=這是我的語法錯誤。

Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open("C:\test.xlsx") 

'This line fails 
objExcel.ActiveWorkbook.Names.Add Name="_myRange", RefersTo="Sheet1!$A$1:$D$3" 

objExcel.ActiveWorkbook.Save 
objExcel.ActiveWorkbook.Close 
objExcel.Application.Quit 
WScript.Echo "Finished." 
WScript.Quit 

任何想法?

+0

在正常的Excel VBA中,我使用'Sheet1.Range(「$ A $ 1:$ D $ 3」)。Name =「_myRange」'這個工作在VBscript中嗎? – Davesexcel

回答

1

Name:="_myRange"語法是指定的參數語法。正如你所看到的,你不能在VBScript上使用它。但是,您不能簡單地將其更改爲Name="_myRange"Name="_myRange"將導致FALSE,因此您嘗試使用FALSE作爲名稱。那就是爲什麼錯誤。

您必須按照正確的順序放置參數,而不必命名它們。

objExcel.ActiveWorkbook.Names.Add "_myRange", "=Sheet1!$A$1:$D$3"

哦,參考必須=開始。

+0

這工作。謝謝! – Andrew

0

您需要=冒號之前在.Names.Add

objExcel.ActiveWorkbook.Names.Add Name:="_myRange", RefersTo:="Sheet1!$A$1:$D$3"

這是在VBA中,我假設(希望正確),它適用於VBScript中。

+1

我相信你假設不正確。沒有一些解決方法,命名參數在VBScript中看起來並不是什麼東西。 – JNevill

+0

@JNevill - 啊,Drats,謝謝。 – BruceWayne

0

你確定你的語法正確嗎? 如果您通過名稱引用參數,你必須添加:=

試試這個:致電objExcel.ActiveWorkbook.Names.Add( 「_myRange」, 「工作表Sheet1 $ A $ 1:$ d $ 3」)

+0

如果在vbscript中將':='添加到命名參數語法中,您將會看到一個錯誤。命名參數在vbscript中並不像vba中那樣。 – JNevill