Application.CalculateUntilAsyncQueriesDone 崩溃 Excel

Application.CalculateUntilAsyncQueriesDone Crashes Excel

我有一个在 Power-BI 服务上发布的 OLAP 数据模型。我使用 CUBE 公式构建了一份报告。我需要根据 CUBEVALUE 结果做一些隐藏和显示列。我需要为一大堆切片器选择打印 PDF。当然,我需要我的 VBA Sub 等待所有 CUBE 公式完成刷新。

我知道 Application.CalculateUntilAsyncQueriesDone 方法会让我等到刷新完成。然而,在 Excel 2016 年,它似乎崩溃了 excel。它只是无限期地等待。

Excel 版本:Microsoft Excel for Microsoft 365 MSO (16.0.13001.20254) 64 位

我遇到了与 Power-Query 查询相同的问题,但是在调用 Application.CalculateUntilAsyncQueriesDone 之前将所有查询的 BackgroundQuery 属性 设置为 FALSE 解决了崩溃问题.遗憾的是,对于 OLAP 数据连接,BackgroundQuery 属性 无法设置为 FALSE

以下技巧也没有用:

Do Until Application.CalculationState = xlDone
Loop

刷新开始有点晚,在那段时间 Application.CalculationStatexlDone,代码甚至不等待刷新开始。如果我使用 Application.Wait 方法,Query 也会等待刷新。

这只是在我的电脑上吗?或者,你们所有人都面临 Application.CalculateUntilAsyncQueriesDone 的问题吗? 您是如何解决这个问题的?

我一直遇到类似的问题,但我所有问题的共同点是 Application.Calculation 在触发 CalculateUntilAsyncQueriesDone 时设置为 xlCalculationManual。在此之前,我尝试了一系列CalculateCalculateFullCalculateFullRebuild都没有用。

您可能需要执行如下操作才能使您的脚本正常工作:

    With Application
        .Calculation = xlCalculationAutomatic
        .CalculateUntilAsyncQueriesDone

        Do Until .CalculationState = xlDone
        Loop
        
        .Calculation = xlCalculationManual
    End With