VBScript是否允许在函数调用中使用命名参数?

CJ7*_*CJ7 2 vbscript named-parameters

我试图运行以下代码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
Run Code Online (Sandbox Code Playgroud)

小智 7

VBScript不支持过程和函数的命名参数.您需要将参数列表更改为位置:

Workbooks.OpenText Filename_Argument, xlMSDOS, ...
Run Code Online (Sandbox Code Playgroud)

VBScript也不识别Excel常量(如xlMSDOS),因此您需要查找它们并用它们的数值替换它们:

Workbooks.OpenText Filename_Argument, 3, ...
Run Code Online (Sandbox Code Playgroud)

并且您必须使用显式对象引用:

objExcel.Workbooks.OpenText Filename_Argument, 3, ...
Run Code Online (Sandbox Code Playgroud)

Excel宏记录器将命名参数放入位置顺序,因此您只需删除参数名称即可.您可以省略您不想指定的可选参数,例如:

x = Function(Var1, , Var3)
'                 ^
'                 `- omitted optional 2nd parameter
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢保留命名常量并使用`Const`声明它们,因此将是`Const xlMSDOS = 3`,而不是使用文字数值. (2认同)