在继续之前让vba等待

我需要更新4个不同的工作簿,这些工作簿全部收集来自bloomberg的数据。 我试图构build一个新的工作簿,它将自动打开它们,工作簿中的代码将被激活,因为代码在工作簿打开时被激活。 但是,我的macros同时打开所有工作簿,同时打开更新时间过长。 我尝试使用命令“doevents”和“Application.Wait(Now + TimeValue(”0:03:30“))”,但他们不工作。 我希望他们当时打开一个,然后让特定工作簿中的计算结束,然后再打开下一个工作簿。

这是我的代码:

Sub UpdateWorkbooks() 'Quick Financial Longer Series Workbooks.Open ("G:\FONDS\Quick financials_Longer Series.xlsb") Application.Wait (Now + TimeValue("0:03:30")) 'Quick Financial Workbooks.Open ("G:\FONDS\Quick Financial\Auto\Quick financials.xlsb") Application.Wait (Now + TimeValue("0:03:30")) 'Quick Intra Corr (SX5E) Workbooks.Open ("G:\FONDS\Quick Financial\Auto\Quick Intra Corr(SX5E).xlsb") Application.Wait (Now + TimeValue("0:03:30")) 'SPX Sector Correlation Workbooks.Open ("G:\FONDS\SPX Sector Correlation.xlsb") Application.Wait (Now + TimeValue("0:03:30")) Workbooks("UpdateWorkbooks.xlsb").Close savechanges:=True End Sub 

application.calculationstate可能有帮助。 把它包装在一个函数中,你甚至可以返回状态,并使用一个do来做。 不确定无限循环的可能性,所以也可以添加一个重试计数器。

  Select Case Application.CalculationState Case 0: strCalculationState = "Calculating" Case 1: strCalculationState = "Done" Case 2: strCalculationState = "Pending" End Select