You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让VBA等待Power Pivot的#GETTING DATA完成后再执行?

OLAP切片器切换后等待Cube公式加载完成的VBA解决方案需求

我有一个关联两个切片器的大型Data Model Excel工作簿,需要遍历切片器所有条目,待工作簿加载完大量Cube公式后,将指定工作表内容复制到另一工作表。

已编写实现逻辑的VBA代码,但无法让VBA等待工作簿完成数据加载后再执行后续脚本:

  • 背景刷新方案不适用于OLAP,已排除;
  • 网上各类等待计算完成的方案均无效,脚本会直接跳过等待代码;
  • 逐个检查所有显示#GETTING DATA的单元格虽然可行,但工作簿有数百个此类单元格,该方案不具可持续性;
  • 使用Application.Wait时,工作簿会暂停数据加载,达不到预期效果。

设置关联Data Model的切片器不同值并自动化输出是常见任务,应该有对应解决方案,我使用的是Office365。

现有VBA代码

Sub generate_all_forecasts()
'Cycle through all products and push forecast values to fcst_output'
Application.ScreenUpdating = True

Dim SC_products As SlicerCache
Dim selection, product_array As Variant
Dim push As Boolean

Set SC_products = ThisWorkbook.SlicerCaches("Slicer_PRODUCT_GROUPING_WRITTEN") 'The product slicer on the Inputs worksheet'

product_array = Range("product_array") 'Named range product_array on Tbl_Codes worksheet'

For Each p In product_array 'For each product'

push = WorksheetFunction.Index(Range("fcst_push_array"), WorksheetFunction.Match(p, product_array, 0)) 'Check if the product has been selected for this run'

If push = True Then
    
    If p = "Major Medical Plan" Then  'If "Major Medical" '
    selection = Array("[Query1 1].[PRODUCT_GROUPING_WRITTEN].&[Major Medical Plan - CMM]", _
    "[Query1 1].[PRODUCT_GROUPING_WRITTEN].&[Major Medical Plan - GMM]")  'selection will be both CMM and GMM'
    Else
    selection = Array("[Query1 1].[PRODUCT_GROUPING_WRITTEN].&[" & p & "]")  'Otherwse selection is the single product'
    End If

    SC_products.VisibleSlicerItemsList = selection  'Change slicer to current selection'

    'This is where the script needs to pause until #GETTING DATA is complete'

    Application.Run "push_to_output"  'Run the forecast update macro'
    
End If

Next p

Worksheets("Fcst_Output").Range("B2:B1381").Value = "" 'Clear prior month's comments'

Application.ScreenUpdating = True
End Sub

已尝试但无效的方案

  • 针对Power Pivot切片器切换后的等待方案
  • 让VBA暂停后再执行的通用方案
  • 等待Application.Calculate完成的方案

不想使用的方案

  • 强制VBA等待Power Pivot刷新完成的方案(逐个检查Data Model连接状态的方式)

内容的提问来源于stack exchange,提问作者OldKingCole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:50:45