我有一个立方体连接到excel中的Pivots。 在一个单元格中,我通过以下公式显示“最新更新”值:
=CUBEVALUE("CUBE NAME";"[Measures].[Last Data Update]")
excel需要5-10秒才能从多维数据集中获取更新时间并更新单元格。所以,如果我在我重新打开工作簿后只是说n / a后直接关闭工作簿。
我已安排此wb通过另一个计划每天运行的wb自动更新(以及其他wbs)。 有了这个,我得到了不适用的问题。 我看到两个解决方案,我不知道如何去做:
1,暂停宏10秒,以便正确获取日期。 - 我已经尝试了等待和睡眠Vba,但这也暂停了计算。 - 有没有办法暂停宏执行?
2,通过vba获取更新日期,然后将其打印到单元格。 - 我不知道该怎么做。我搜索过但没有找到任何替代方案。 - 有谁知道如何才能实现这一目标?
由于 利亚
解决:
只想分享我的解决方案。找到了处理OLAP数据源的CalculateUntilAsyncQueriesDone方法:
Application.CalculateUntilAsyncQueriesDone
Do While Application.CalculationState <> xlDone
DoEvents
Loop
此处有更多信息:https://msdn.microsoft.com/en-us/library/office/ff821008.aspx
答案 0 :(得分:0)
试试我多年前写过的等待代码。这将等待指定的秒数,让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