2016-07-08 20 views
0

Ich schreibe ein Makro auf Knopf klicken. Auf dieser Schaltfläche klicken, habe ich drei Funktionen nacheinander auszuführen.Excel VBA: Funktionen nicht synchron ausgeführt

-Code ist:

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

-Code für RunCode ist:

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 

Funktion RunCode ein Python-Skript über die Befehlszeile ausgeführt wird. Es dauert einige Zeit zu laufen, und ich brauche Daten aus Python-Skript für copy_paste_sheet und kumulative_percent Funktion (Beide Funktionen sind einfache Excel-Blatt-Manipulationen).

Aber das Problem ist: Bevor der RUnCode beendet ist, laufen zwei andere Funktionen, was zur Verarbeitung der falschen Daten führt.

Können Sie mir dabei helfen. Danke im Voraus.

+0

Blick in Warte Befehle in VBA. Ich glaube, es gibt eine Möglichkeit, den Code warten zu lassen, bis das Skript abgeschlossen ist, bevor der nächste Teil ausgeführt wird. – RGA

+1

Können Sie den Code in der 'RunCode'-Subroutine veröffentlichen? –

+0

Überprüfen Sie auch mit 'WshShell' https://msdn.microsoft.com/en-us/library/aew9yb99 und http://stackoverflow.com/questions/8902022/wait-for-shell-to-finish-then- format-cells –

Antwort

0

Versuchen Sie stattdessen:

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 
Verwandte Themen