2017-02-12 103 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