2016-07-08 103 views
0

我正在写一个按钮单击的宏。点击这个按钮后,我有三个功能可以一个接一个地运行。Excel VBA:函数不能同步运行

代码是:

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

代码RUnCode是:

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脚本。这需要一些时间来运行,我需要python脚本中的数据copy_paste_sheet和cumulative_percent函数(这两个函数都是简单的Excel表单操作)。

但问题是:在RUnCode结束之前,其他两个函数正在运行,从而导致处理错误的数据。

你能帮我解决这个问题吗?提前致谢。

+0

查找到VBA等待命令。我相信有一种方法可以让代码等到脚本完成后再运行下一部分 – RGA

+1

您可以将代码放在'RUnCode'子例程中吗? –

+0

还可以使用'WshShell'检出https://msdn.microsoft.com/zh-cn/library/aew9yb99和http://stackoverflow.com/questions/8902022/wait-for-shell-to-finish-then- format-cells –

回答

0

试试这个:

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