2016-07-08 3 views
0

단추를 클릭 할 때 매크로를 쓰고 있습니다. 이 버튼을 클릭하면 세 가지 기능이 차례로 실행됩니다.Excel VBA : 함수가 동 기적으로 실행되지 않습니다.

코드는 다음과 같습니다 위해 RunCode에 대한

Sub submit() 
    ActiveWorkbook.Save 
    Call RUnCode 
    Call copy_paste_sheet 
    Call cumulative_percent 
End Sub 

코드는 다음과 같습니다

Private Sub RUnCode() 
    Dim pyPrgm As String, pyScript As String 
    pyPrgm = "python " 
    pyScript = "C:\Users\Kishan\Desktop\script.py" 
    Call Shell(pyPrgm & pyScript, vbMinimizedNoFocus) 
End Sub 

기능 위해 RunCode 명령 줄을 통해 파이썬 스크립트를 실행한다. 그것은 실행하는 데 시간이 걸립니다, 그리고 copy_paste_sheet 및 cumulative_percent 함수 (둘 다 함수는 간단한 엑셀 시트 조작입니다)에 대한 파이썬 스크립트에서 데이터가 필요합니다.

하지만 문제는 RUnCode가 끝나기 전에 다른 두 함수가 실행 중이므로 잘못된 데이터를 처리하는 것입니다.

도와 주시겠습니까? 미리 감사드립니다.

+0

봐. 나는 당신이 코드가 다음 부분을 실행하기 전에 완료 될 때까지 기다릴 수있는 방법이 있다고 믿는다. – RGA

+1

'RUnCode' 서브 루틴에 코드를 게시 할 수 있습니까? –

+0

또한'WshShell'을 사용하여 체크 아웃하십시오 https://msdn.microsoft.com/en-us/library/aew9yb99 그리고 http://stackoverflow.com/questions/8902022/wait-for-shell-to-finish-then- 형식 셀 –

답변

0

대신보십시오 : VBA에서 대기 명령에

Private Sub RunCode() 

    Dim objShell As Object 
    Dim strCmd As String 
    Dim lngErrorCode As Long 

    strCmd = "python C:\Users\Kishan\Desktop\script.py" 
    Set objShell = CreateObject("WScript.Shell") 
    lngErrorCode = objShell.Run(strCmd, 1, True) 
    Debug.Print lngErrorCode 

End Sub 
관련 문제