vba使用公式获取多维数据集更新时间需要延迟macros执行

我有一个连接到Excel中的枢轴的立方体。 在一个单元格中,我用这个公式显示“最新更新”的值:

=CUBEVALUE("CUBE NAME";"[Measures].[Last Data Update]") 

Excel需要5-10秒才能从立方体获取更新时间并更新单元格。 因此,如果我在重新打开工作簿后直接closures工作簿,那么只会说n / a。

我已经安排这个wb通过另一个计划每天运行的wb自动更新(和其他wbs)。 因此,我得到了不适用的问题。 我看到两个解决scheme,我不知道如何去:

1,暂停10秒的macros,以便能正确的得到date。 – 我已经尝试了等待和睡眠VBA但这也暂停计算。 – 有什么办法只是暂停macros执行?

2,获取vba的更新date,然后打印到一个单元格。 – 我不知道如何做到这一点。 我已经search,但没有find任何其他select。 – 有谁知道如何做到这一点?

感谢Elias

解决了:

只是想分享我的解决scheme。 find处理OLAP数据源的CalculateUntilAsyncQueriesDone方法:

  Application.CalculateUntilAsyncQueriesDone Do While Application.CalculationState <> xlDone DoEvents Loop 

更多信息: https : //msdn.microsoft.com/en-us/library/office/ff821008.aspx

尝试多年前写的这个Wait代码。 这将等待指定的秒数,让Excel计算它的公式。 只需将10改为任何你想要的数字。

 Sub Sample() ' '~~~> Rest of your code ' Wait 10 '<~~ Wait for 10 secs ' '~~~> Rest of your code ' End Sub Private Sub Wait(ByVal nSec As Long) nSec = nSec + Timer While nSec > Timer DoEvents Wend End Sub 

只是想分享我的解决scheme。 find处理OLAP数据源的CalculateUntilAsyncQueriesDone方法:

  Application.CalculateUntilAsyncQueriesDone Do While Application.CalculationState <> xlDone DoEvents Loop 

更多信息: https : //msdn.microsoft.com/en-us/library/office/ff821008.aspx