刷新数据透视表

Posted

技术标签:

【中文标题】刷新数据透视表【英文标题】:Refresh Pivot Table 【发布时间】:2016-09-07 05:33:09 【问题描述】:

在 Excel 2013 中 - 的 VBA 语法是什么?我已经尝试了以下两个选项,但它们都没有刷新我的数据透视表。

    'Does Not Work
Sheets("Sheet1").Select
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
'Does Not Work
For Each Sheet In ThisWorkbook.Worksheets
    For Each Pivot In Sheet.PivotTables
        Pivot.RefreshTable
        Pivot.Update
    Next
Next

编辑 添加到它---我实际上需要刷新嵌入式 mysql 查询 1 次然后。

【问题讨论】:

您是否尝试过使用宏记录器来查看它使用的语法?看起来 activeworkbook.refreshall 应该替换那些循环。 哪个版本的 Excel?当我使用宏记录器时,我得到这个: ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh 数据透视表源到底是什么?源刷新了吗? @Mat'sMug - 数据透视表源是一个嵌入式 mysql 查询,需要先刷新...我想知道数据透视表是否在完全之前发生。跨度> Excel 2013 我正在使用下拉菜单中的全部刷新按钮。使用正常的刷新按钮,我得到了 ..pivotcashe.refresh,它也可以通过 vba 为我运行它。 【参考方案1】:

我的问题是通过在刷新之前将相关连接中的BackgroundQuery 设置为False 解决的:

With ThisWorkbook.Connections(1).OLEDBConnection
    .BackgroundQuery = False
    .Refresh
End With
Pivot.RefreshTable

(将OLEDBConnection替换为适当的连接对象)

似乎将BackgroundQuery 设置为True,在代码退出之前,连接不会完成数据检索。您可以通过以下方式看到这一点:

With ThisWorkbook.Connections(1).OLEDBConnection
    .BackgroundQuery = True
    .Refresh
    Do While .Refreshing
        DoEvents
    Loop
End With

此循环永远不会终止,并且 Excel 中的状态栏显示“正在运行背景查询(单击此处取消)”;单击会弹出一个对话框,显示“已获取所有行。”,但查询显然仍在运行。

另请参阅此答案 - https://***.com/a/25054870/3590073

【讨论】:

以上是关于刷新数据透视表的主要内容,如果未能解决你的问题,请参考以下文章

Excel数据透视表怎么刷新数据源

为啥数据透视表无法刷新数据

刷新数据透视表

[Echarts]React项目中无法刷新数据

需要登录凭据时刷新 OLAP(数据透视表)

使用宏刷新我的 excel 工作簿中的所有数据透视表