Vbscript 在VB脚本中调用的VB脚本
我们正在使用Vbscript 在VB脚本中调用的VB脚本,vbscript,wsh,byref,Vbscript,Wsh,Byref,我们正在使用ByRef在VB脚本(脚本a)中调用一个VB脚本(比如脚本B) 脚本A在调用B之前调用多个其他脚本,它们可以工作 所有脚本都放在同一文件夹中 问题是B没有接到电话 如果我们双击B,它工作得很好 我们调试如下 我们试图通过将MsgBox放置在调用B.之前/之后,以及作为B.中的第一条语句进行调试。未显示任何语句 为了查看是否调用了正确的脚本路径,我们删除了B,脚本A挂起,这表明它找不到B 我不知道是什么问题,这是令人费解和奇怪的 感谢您就如何着手解决问题提出的任何建议 已更新 我道歉
ByRef
在VB脚本(脚本a)中调用一个VB脚本(比如脚本B)
MsgBox
放置在调用B.之前/之后,以及作为B.中的第一条语句进行调试。未显示任何语句已更新 我道歉!代码行太多,无法完整发布脚本。因此张贴了文字描述。下面是代码片段 注
MsgBox
在脚本B调用显示正常之前李>
MsgBox
就在脚本B调用之后,还会显示“ReturnCode”为空李>
MsgBox
(第一行)不会显示'...
'...
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”execute Script B“&cmdExecute”的输出而言,它只不过是带有参数的脚本B文件的路径。这些参数与在脚本B之前传递给所有脚本的参数相同 \\ScriptB-参数1-参数2 谢谢。第一点 如果要从
ExecuteStep
发回ReturnCode
,则需要将其设置为函数:
Function ExecuteStep(ExecCommandLine)
If swStartStop Then
ReturnCode = VSShell.Run(ExecCommandLine, , True)
CheckForError ReturnCode, intStep, ExecCommandLine
End If
ExecuteStep = ReturnCode
End Function
然后
第2点
我怀疑脚本B没有被调用,因为swStartStop
的计算结果为False
。。。要么是因为错误,要么是因为打字错误。最好在脚本顶部使用Option Explicit
,这将迫使您声明(dim
)所有变量,并在运行时弹出拼写错误。还要将所有必需的变量作为参数传递给函数,以使数据流更加清晰
Function ExecuteStep(ExecCommandLine, swStartStop)
你能包括实际代码吗?文本描述很好,但是您认为任何人都可以在没有看到程序的情况下指出编程错误吗?您好,欢迎来到Stack Overflow。如果你不提供帮助,就很难帮助你。而且,根据测试1,如果在调用B之前甚至没有显示“
MsgBox
”,我假设您的代码甚至没有到达该部分,所以问题应该在这之前。在任何情况下,我们只能在您共享有问题的代码时为您提供帮助。请编辑问题并添加行MsgBox“execute ScriptB”&cmdExecute
中的输出。您显然是新用户…此网站不是论坛,请勿以该假设开始。我建议你在发帖前仔细检查一下。
Function ExecuteStep(ExecCommandLine, swStartStop)