【问题标题】: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 为我运行它。

标签: excel vba pivot-table excel-2013


【解决方案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://stackoverflow.com/a/25054870/3590073

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    相关资源
    最近更新 更多