VBScript が文字列として使用できるものを .OpenTextFile に渡すと、メソッドはファイルを開こうとし、おそらく「ファイルが見つかりません」というエラーをスローします。
>> strInputPath1 = "C:\test" & "\" & "css" & "\" & "main.css"
>> WScript.Echo strInputPath1
>> set f = goFS.OpenTextFile(strInputPath1,1)
>>
C:\test\css\main.css
Error Number: 76
Error Description: Path not found
「無効なプロシージャ コール」エラーを取得するには、空の値など、不吉なものを渡す必要があります。
>> strInputPath1 = Empty
>> set f = goFS.OpenTextFile(strInputPath1,1)
>>
Error Number: 5
Error Description: Invalid procedure call or argument
これらの事実は、あなたが
- 初期化と .OpenTextFile() での使用の間に、変数 strInputPath1 の内容を変更しました。
- または、変数 X を初期化し、変数 Y を使用しました (Y & X は「strInputPath1」のバリエーションである可能性があります)。
- または、異なるスコープ (~Functions/Subs) で同じ名前の 2 つの変数を初期化して使用しました
「Option Explicit」でスクリプトを開始すると、このような失敗のリスクが軽減されます。
wrt「間違った名前の fso を取得しました」コメントを追加しました:
VBScript のエラー メッセージは解釈/理解が難しいことが多いため、これは、「何が問題なのか? VBScript は問題について何を教えてくれるのか? エラーを修正するにはどうすればよいのか? どうすれば回避できるのか?」について熟考する良い機会になるかもしれません。将来?"
goFS で文字列の最初のパラメーターとタイプミス (=> 空の変数) が与えられた場合:
>> strInputPath1 = "C:\test" & "\" & "css" & "\" & "main.css"
>> set f = goSF.OpenTextFile(strInputPath1,1)
>>
Error Number: 424
Error Description: Object required
理にかなっている: ドットの左側にオブジェクトを指定せずにメソッド (. 演算子) を呼び出そうとすることはできません。
邪悪な goSF をオブジェクトに設定しましょう:
>> Set goSF = New RegExp
>> set f = goSF.OpenTextFile(strInputPath1,1)
>>
Error Number: 438
Error Description: Object doesn't support this property or method
「無効なプロシージャ呼び出しまたは引数」エラーはまだありません。goSF は現在 RegExp であるため、特定のメソッド (名前) - OpenTextFile() - を無視して、呼び出しを台無しにするとどうなるかを見てみましょう。
>> WScript.Echo TypeName(goSF)
>> Set ms = goSF.Execute()
>>
IRegExp2
Error Number: 450
Error Description: Wrong number of arguments or invalid property assignment
>> Set ms = goSF.Execute(Null)
>>
Error Number: 13
Error Description: Type mismatch
したがって、私の主張は依然として有効です。エラー「無効なプロシージャ コールまたは引数」は、有効な FSO で呼び出されたメソッド .OpenTextFile() に Empty を渡すことによって発生しました。