ByRef
을 사용하여 VB 스크립트 (스크립트 A) 내에서 VB 스크립트 (예 : 스크립트 B)를 호출합니다.VB 스크립트 내에서 VB 스크립트 호출
- 스크립트 A는 B를 호출하기 전에 다른 여러 스크립트를 호출하고 작동합니다.
- 모든 스크립트는 같은 폴더에 있습니다.
- 문제는 B가 호출되지 않는다는 것입니다.
- 우리가 B를 두 번 클릭하면 잘 작동합니다!
다음과 같이 디버깅했습니다.
MsgBox
을 B 호출 직전/직후에 배치하여 디버깅하려고했습니다. 또한 B의 첫 번째 문도 표시됩니다. 없음이 표시됩니다.- 올바른 스크립트 경로가 호출되고 있는지 확인하기 위해 B를 제거하고 스크립트 A가 멈추었습니다 (B가 발견되지 않음을 나타냄)!
나는 무엇이 문제인지 모르지만, 수수께끼 같고 이상합니다.
문제를 해결하는 방법에 대한 제안을 감사하십시오!
는
내 사과 업데이트! 스크립트 전체를 게시하는 코드 라인이 너무 많습니다. 따라서 게시 된 텍스트 설명. 다음은 코드에서 발췌 한 내용입니다.
참고 잘 스크립트 B 통화 표시하기 전에
MsgBox
!MsgBox
스크립트 B 호출 직후에 "returncode"가 비어 있다고 표시됩니다.MsgBox
스크립트 B (맨 처음 줄)에 표시되지 않습니다.
스크립트
'...
'...
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"
'....
'....
이 찾고에 시간을 주셔서 감사합니다. 이 스 니펫이 이해가되지 않는다면 알려주세요. 고맙습니다.
아직 포럼의 EDIT에 익숙하지 않습니다. @omegastripes가 메시지를 편집하는 데 시간을내어 감사합니다.
"MsgBox"의 출력에서 스크립트 B "& cmdExecute"가 실행되는 한, 매개 변수가있는 스크립트 B 파일의 경로뿐입니다. 이 매개 변수는 스크립트 B 이전의 모든 스크립트에 전달되는 매개 변수입니다.
\\ ScriptB -PARAMETER1 -PARAMTER2은 .. 감사합니다. 그런 다음
Function ExecuteStep(ExecCommandLine)
If swStartStop Then
ReturnCode = VSShell.Run(ExecCommandLine, , True)
CheckForError ReturnCode, intStep, ExecCommandLine
End If
ExecuteStep = ReturnCode
End Function
If swPrint Then
...
...
' This will call ExecuteStep and pass back the ReturnCode
' ----------------------------------------------------------
MsgBox "back from Script B " & ExecuteStep(cmdExecute)
End If
포인트 2
: 포인트 1.
당신은 당신이 그것을 함수를 만들 필요가 ExecuteStep
에서 ReturnCode
다시 보내려면
실제 코드를 넣을 수 있습니까? 텍스트 설명은 좋지만 프로그램을 보지 않고 누구든지 프로그래밍 오류를 지적 할 수 있다고 가정합니까? – Tomalak
안녕하세요. 스택 오버플로를 환영합니다. [mcve]를 제공하지 않으면 도움을 받기가 어렵습니다. 그리고 테스트 1에 따르면 "B를 호출하기 전에"MsgBox "가 표시되지 않으면 문제가 그 전에 거짓말을해야하므로 코드가 해당 부분에 도달하지 않는다고 가정합니다. 어쨌든, 우리는 문제가있는 코드를 공유하는 경우에만 당신을 도울 수 있습니다 –
질문을 편집하고'MsgBox "행에서 출력을 추가하십시오 ScriptB"& cmdExecute'를 실행하십시오. – omegastripes