2016-07-08 13 views
0

ボタンクリックでマクロを作成しています。このボタンをクリックすると、3つの機能が次々に実行されます。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は、コマンドラインからPythonスクリプトを実行しています。実行には時間がかかりますし、copy_paste_sheetとcumulative_percent関数のためにPythonスクリプトからのデータが必要です(両方の関数は単純なExcelシート操作です)。

ただし、RUnCodeが終了する前に、他の2つの関数が実行されているため、間違ったデータが処理される問題があります。

これを手伝ってもらえますか?前もって感謝します。

+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 
関連する問題