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)

  • 脚本A在调用B之前调用多个其他脚本,它们可以工作
  • 所有脚本都放在同一文件夹中
  • 问题是B没有接到电话
  • 如果我们双击B,它工作得很好 我们调试如下

  • 我们试图通过将
    MsgBox
    放置在调用B.之前/之后,以及作为B.中的第一条语句进行调试。未显示任何语句
  • 为了查看是否调用了正确的脚本路径,我们删除了B,脚本A挂起,这表明它找不到B 我不知道是什么问题,这是令人费解和奇怪的

    感谢您就如何着手解决问题提出的任何建议


    已更新

    我道歉!代码行太多,无法完整发布脚本。因此张贴了文字描述。下面是代码片段

  • MsgBox
    在脚本B调用显示正常之前
  • 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”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)