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

7

我正在尝试在 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
1个回答

12

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

Workbooks.OpenText Filename_Argument, xlMSDOS, ...

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

Workbooks.OpenText Filename_Argument, 3, ...

你必须使用明确的对象引用:

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

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

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

1
给那位点踩的用户,如果你认为这不是一个好的回答,那为什么不自己添加一个回答呢? - CJ7
... 或者至少解释一下你认为一个基本正确的答案有什么问题。 - Ansgar Wiechers
2
我倾向于保留命名常量并使用 Const 声明它们,因此应该是 Const xlMSDOS = 3,而不是使用字面数字值。 - user692942
使用命名常量相关。 - user692942

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接