1

VBscript を別の VBscript (VBS で OO をシミュレートするようなもの) に含めたいのですが、オンラインで何かを見つけたので、私には問題ないようです。行に「予期されるステートメント」エラーが表示され続けExecuteGlobalます。

Dim scriptLocation

Sub Main
    scriptLocation ="script2.vbs"
    Include(scriptLocation)
End Sub

Sub Include (strFile)
    Dim fsObj : Set fsObj = CreateObject("Scripting.FileSystemObject")
    Dim vbsFile : Set vbsFile = fsObj.OpenTextFile(strFile, 1, False)
    Dim myFunctionsStr : myFunctionsStr = vbsFile.ReadAll
    vbsFile.Close
    Set vbsFile = Nothing
    Set fsObj = Nothing
    ExecuteGlobal myFunctionsStr
End Sub

誰でもアイデアはありますか?

4

3 に答える 3

4

行のエラーメッセージは、次のExecuteGlobalことを意味します。

  1. ExecuteGlobalあなたは声明を台無しにすることに成功しました。Include賢明な方法: Sub呼び出しの場合と同じようにparam list()を追加します
  2. あなたがロードしたコードmyFunctionStrは非難することです。チェーン/マルチプルインクルードを行う場合、VBScriptのエラー処理のこの「機能」により、原因の特定が困難になります。簡単な方法:「ライブラリ」ファイルをcscriptで実行します。

ところで:OOPとインクルードコード(ライブラリ/モジュール)の間に必要な関係はありません。

于 2013-03-14T15:47:37.693 に答える
1

組み込みの sub に問題はありませんExecuteGlobal。これを試して:

ExecuteGlobal "*"

これにより、予想されるステートメントエラーが発生します。しかし、ご覧のとおり、問題は文字列の中にあります。したがって、 script2.vbsをデバッグするだけです。

于 2013-03-14T16:28:40.023 に答える
0

HexEditor で script2.vbs を開こうとします。スクリプトが UTF-8 でエンコードされている場合、ファイルの先頭に 0x{ef bb bf} が含まれます。メソッド .ReadAll は、その 3 バイトを含め、ファイルから myFunctionStr までのすべてを読み取ります。文字列からそのバイトを削除するか、script2.vbs を ANSI に変換してください。

于 2014-04-23T10:39:47.203 に答える