2017-02-12 8 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を削除することができますames。指定しないオプションのパラメータは省略できます(例:

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

)これは悪い回答だと思われる場合は、自分で回答を追加してみましょう。 – CJ7

+0

...または少なくとも本質的に正しい答えについて間違っていると考えていることを説明してください。 –

+2

名前付き定数を保持し、それらを 'Const'を使って宣言する方が好きです。したがって、定数の数値を使うのではなく、' Const xlMSDOS = 3'になります。 – Lankymart

関連する問題