2017-02-12 63 views
1

我試圖在VBScript中運行下面的代碼,但它並沒有編譯最後一條語句。是否因爲VBScript不允許命名參數?VBScript是否允許在函數調用中使用命名參數?

Filename_Argument = WScript.Arguments(0) 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = True 
Set objWorkbook = objExcel.Workbooks.Add() 
Workbooks.OpenText Filename:=Filename_Argument, Origin _ 
     :=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ 
     xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _ 
     , Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo _ 
     :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _ 
     Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True 

回答

5

VBScript不支持過程和函數的命名參數。你需要的參數列表改爲位置:

Workbooks.OpenText Filename_Argument, xlMSDOS, ... 

VBScript中也不能識別Excel中的常量(如xlMSDOS),所以你需要尋找他們,並取代他們使用其數值:

Workbooks.OpenText Filename_Argument, 3, ... 

,您必須使用明確的對象引用:

objExcel.Workbooks.OpenText Filename_Argument, 3, ... 

Excel宏錄製將名爲參數到位置順序,這樣你就可以直接刪除參數n埃姆斯。你不希望指定可選參數可以省略,例如:

x = Function(Var1, , Var3) 
'    ^
'     `- omitted optional 2nd parameter 
+0

到downvoter,如果你認爲這是一個不好回答,那麼爲什麼不加入自己的答案嗎? – CJ7

+0

...或至少解釋你認爲錯誤的是一個基本正確的答案。 –

+2

我更喜歡保留命名常量並使用Const來聲明它們,因此將會是Const Const xlMSDOS = 3,而不是使用文字數字值。 – Lankymart

相關問題