掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
関数に引数を渡すには? (ID:124964)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
とりあえず、VBScript Version 5.6.8820 の環境にて、提示されたような 下記のコードで実験してみましたが……特に問題なく動作しました。(^^; '=====C:\test.func===== Sub TestSub(strSvrNum) MsgBox strSvrNum End Sub '=====呼び出し元===== Option Explicit 'On Const cnsFuncFile = "C:\test.func" Dim objFSO, objFunc,strSvrNum strSvrNum = "123" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFunc = objFSO.OpenTextFile(cnsFuncFile, 1, False) Execute objFunc.ReadAll objFunc.Close Set objFunc = Nothing Set objFSO = Nothing Call TestSub(strSvrNum) なお、実験に使ったのは、以下の4種のホスト環境です。 CScript.exe 5.6.0.8820 WScript.exe 5.6.0.8820 Microsoft スクリプト コントロール 1.0.0.8820 Internet Explorer 6.0.2900.2180.xpsp_sp2_gdr.050301-1519 > 「どうして今の記述で動かないか?」を判断することはできませんでした… 以下、確認事項。 1. 提示されたコードの場合、エラーが発生しているのは、 『Call TestSub(strSvrNum)』の行なのでしょうか。それとも、 別の行なのでしょうか? 2. 掲示板に提示していない、他の部分のコードに原因が あったりはしませんか? 簡単なテスト用のコードを書いて 確認してみてください。 3. Execute の代わりに、ExecuteGlobal を使ってみた場合はどうですか? 4. 呼び出し側から渡す引数の数を変更してみてください。 メッセージに何か変化はありますか? 5. 『Call TestSub(strSvrNum)』を呼び出す「直前」にて、 MsgBox TypeName(GetRef("TestSub")) という一行を入れてみてください。正しく実装されているならば、 『Object』というメッセージが表示されるはずです。 6. 『Call TestSub(strSvrNum)』を呼び出す「直前」にて、 MsgBox TypeName(TestSub) という一行を入れてみてください。正しく実装されているならば、 『型が一致しません。』のエラーになるはずです。 7. 『Execute objFunc.ReadAll』を呼び出す「直前」にて、 MsgBox TypeName(TestSub) という一行を入れてみてください。正しく実装されているならば、 Option Explicitがあれば、『この変数は宣言されていません』エラー、 Option Explicitが無いと、『Empty』と表示されるはずです。 8. 『Execute objFunc.ReadAll』を呼び出す「直前」にて、 MsgBox TypeName(GetRef("TestSub")) という一行を入れてみてください。正しく実装されているならば、 『プロシージャの呼び出し、または引数が不正です。』エラーに なるはずです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.