7

I am trying to run the following code in VBScript but it is not compiling the last statement. Is it because VBScript doesn't allow named arguments?

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 Answer 1

12

VBScript doesn't support named arguments to procedures and functions. You need to change the argument list to positional:

Workbooks.OpenText Filename_Argument, xlMSDOS, ...

VBScript also doesn't recognize Excel constants (like xlMSDOS), so you need to look them up and replace them with their numeric values:

Workbooks.OpenText Filename_Argument, 3, ...

And you must use explicit object references:

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

The Excel Macro Recorder puts named arguments into positional order, so you can just delete the parameter names. Optional parameters that you don't want to specify can be omitted, e.g.:

x = Function(Var1, , Var3)
'                 ^
'                 `- omitted optional 2nd parameter
Sign up to request clarification or add additional context in comments.

4 Comments

To the downvoter, if you think this is a bad answer then why not add an answer yourself?
... or at least explain what you consider wrong about an essentially correct answer.
I prefer to keep the Named Constants and declare them using Const, so would be Const xlMSDOS = 3, rather than using literal numeric values.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.