ByRef
を使用してVBスクリプト(スクリプトA)内のVBスクリプト(スクリプトB)を呼び出しています。VBスクリプト内で呼び出されるVBスクリプト
- スクリプトAは、Bを呼び出す前に他の複数のスクリプトを呼び出して動作します。
- すべてのスクリプトは同じフォルダに置かれます。
- 問題は、Bが呼び出されていないことです。
- Bをダブルクリックすると、正常に動作します。
次のようにデバッグしました。
MsgBox
をBの直前または直後に配置してデバッグしようとしました。また、Bの最初のステートメントとしては表示されません。- 正しいスクリプトパスが呼び出されているかどうかを確認するために、Bを削除し、スクリプトAがハングしました。
私は何が問題なのか分かりませんが、困惑し、奇妙です!
問題を解決する方法を教えてください。
は
私の謝罪を更新しました!スクリプト全体を投稿するにはあまりにも多くのコード行があります。したがって、投稿されたテキストの説明。ここにコードからのスニペットがあります。
注スクリプトBのコールが表示される前に
MsgBox
だけで罰金!MsgBox
スクリプトBの直後に「returnCode」が空白であることだけが表示されます。スクリプトB(最初の行)のMsgBox
が表示されません。
スクリプトA
'...
'...
MsgBox "ready to execute Script B"
If swPrint Then
cmdExecute = RootDir & "Scripts\Master\Application\" & ScriptB & " //B " & _
"-JOB=" & strJobNumber & " " & "-APP=" & strApp & strEnv & strMRO & strZIP & " " & "-QAPDF=" & strQAPDF & " " & "-QAPRNT=" & strQAPRNT
MsgBox "execute Script B " & cmdExecute
ExecuteStep cmdExecute
MsgBox "back from Script B " & ReturnCode
End If
Public Sub ExecuteStep(ByRef ExecCommandLine)
If swStartStop Then
ReturnCode = VSShell.Run(ExecCommandLine, , True)
CheckForError ReturnCode, intStep, ExecCommandLine
End If
End Sub
スクリプトB
MsgBox "in Script B"
'....
'....
この覗くであなたの時間を感謝しています。これらのスニペットが意味をなさない場合はお知らせください。ありがとうございました。それでもフォーラムでの編集に慣れ
。 @omegastripesがメッセージを編集するのに時間がかかることを賞賛します。
"MsgBox"の出力では、スクリプトB "& cmdExecute"が実行される限り、パラメータ付きスクリプトBファイルへのパス以外は何もありません。これらは、スクリプトBより前のすべてのスクリプトに渡されるパラメータと同じです。
\\ ScriptB -Parameter1 -PARAMTER2は...ありがとうございました。あなたはExecuteStep
からReturnCode
を返送する場合は、その機能にする必要があり
あなたは実際のコードを含めることはできますか?テキストの説明は素晴らしいですが、誰もプログラムを見ずにプログラミングエラーを指摘することができると思いますか? – Tomalak
こんにちはと歓迎するスタックオーバーフロー。あなたが[mcve]を提供しないと、あなたを助けるのは難しいです。そして、いない場合でも、テスト1によると、「'MsgBox' Bを呼び出す前に」が表示され、私は問題はその前にある必要がありますので、あなたのコードでもその部分に到達しないと仮定します。あなたが問題のあるコード –
を共有している場合いずれにせよ、我々は唯一の問題を編集し、ライン 'のMsgBox&cmdExecute'「ScriptBを実行」からの出力を追加してください、あなたを支援することができます。 – omegastripes