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

时间:2016-08-10 15:50:34

标签: excel vba excel-vba macros

我有一个立方体连接到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

1 个答案:

答案 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