VBA:刷新 Power 查询并随后更新数据透视表

VBA: Refresh Power query and subsequently update pivot tables

我有一个 Excel 文件,其中包含一个 sheet“DATA”,其中包含使用 Power Query 提取的数据,另外三个 sheet 包含枢轴 table 都依赖于“DATA”中这些提取的数据。

我想创建一个 VBA,它 (1) 在 Excel 文件打开时自动 refreshes/reruns 上面指定的 Power Query,并且 (2) 随后更新三个数据透视表 tables 镜像更新后的数据。

我试了好几次,在Whosebug上找了类似的问题,但是都没有成功: 虽然我可以通过刷新连接来刷新数据,但 Pivot tables 没有相应更新。

一个 VBA 代码没有产生预期的结果(即随后更新 Pivot table)是:

Sub test()

Dim ws As Worksheet
Dim pt As PivotTable

'ActiveWorkbook.RefreshAll 'make sure the refresh in bg property is false for all connections
 ActiveWorkbook.Connections("Name of Query").Refresh
For Each ws In ActiveWorkbook.Worksheets
    For Each pt In ws.PivotTables
        pt.RefreshTable
    Next pt
Next ws

End Sub

谢谢!

您必须确保“后台刷新”设置为 false:

    Sub Refresh_All_Data_Connections()
        Dim objConnection, bBackground
            For Each objConnection In ThisWorkbook.Connections
                'Get current background-refresh value
                bBackground = objConnection.OLEDBConnection.BackgroundQuery
        
                'Temporarily disable background-refresh
                objConnection.OLEDBConnection.BackgroundQuery = False
        
                'Refresh this connection
                objConnection.refresh
        
                'Set background-refresh value back to original value
                objConnection.OLEDBConnection.BackgroundQuery = bBackground
            Next
    ThisWorkbook.RefreshAll
    End Sub

更新:添加了 refreshall 以刷新所有数据透视表。 如果您只想刷新特定查询(假设设置了 sh),请重新阅读您的问题:

    sh.ListObjects("Name of Table").QueryTable.refresh BackgroundQuery:=False
    ThisWorkbook.RefreshAll