刷新数据透视表

时间:2016-05-11 17:01:27

标签: excel vba pivot-table excel-2013

在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 个答案:

答案 0 :(得分:0)

我的问题是通过在刷新之前在相关连接中将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中的状态栏显示“RUNNING BACKGROUND QUERY(点击此处取消)”;点击会显示一个对话框,显示“所有行已获取。”,但查询仍然显示正在运行。

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