2017-12-22 14 views
0

내 셸 프로그램을 실행하는 VBA 코드를 찾을 수있었습니다. 하지만 기다리지 않고 있습니다. 쉘이 파일 처리를 시작하기 전에 코드의 다음 줄로 이동하여 파일을 이동합니다.셸 캡처 오류 코드를 실행하고 vba에서 대기 코드

Dim ShellString As String 
ShellString = _ 
     "cmd.exe /k " _ 
     + "cpdf.exe" + _ 
     " -split " + _ 
     Chr(34) + PDFFile + Chr(34) + _ 
     " -o " + _ 
     Chr(34) + ActiveWorkbookPath + "\" + OutputFileSubFolder + "\" + ProcessingFileWithoutExtension + "_%%%.pdf" + Chr(34) 

Shell ShellString 

' THERE IS SOME CODE HERE THAT MOVES MY FILE. 
' THIS CODE RUNS BEFORE THE SHELL COMMAND RUNS 
' THAT'S THE PROBLEM. IT MOVES THE FILE BEFORE SHELL HAS A CHANCE TO WORK ON IT... 

따라서 원하는 것이 2 개 있습니다. 1) 실행중인 쉘 명령에서 오류 코드를 캡처하고 싶습니다. 2) 따라서 오류 코드가 반환 될 때까지는 다른 논리를 쓰지 않을 것입니다. 즉, 셸이 완료되고 오류 코드가 반환 될 때까지 다음 코드 행으로 이동하지 마십시오.

답변

0

VBA의 Shell function은 비동기식으로 실행중인 문제입니다. 반대로 VBScript의 Run method은 훨씬 더 유연합니다. VBA에서 쉽게 호출 할 수 있습니다. 코드에 다음을 추가하십시오 :

Dim WshShell As Object 
Dim ErrorCode As Long 
Set WshShell = VBA.CreateObject("WScript.Shell") 

ErrorCode = WshShell(ShellString,1,True)