Vba excel不刷新所有透视表

Vba excel不刷新所有透视表,vba,excel,excel-2013,Vba,Excel,Excel 2013,我正在尝试使用vba刷新透视表。 我有修改基础表查询并刷新查询的代码。 完成后,它将刷新数据透视表,而数据透视表又将刷新摘要表。由于某些原因,最终数据透视表没有被刷新。它将正常刷新 尝试的方法: 一, 二, 三, 在刷新数据透视表之前,在刷新数据透视表之后,我尝试了包含一个DoEvents。 我还尝试将该文件复制到另一个文件,并在那里重新创建它。效果保持不变,只需移动到它认为最后创建的透视表。 xlsb的文件大小为279Kb,xlsm的文件大小为336KB。 这些表的数据来自SQL server

我正在尝试使用vba刷新透视表。
我有修改基础表查询并刷新查询的代码。
完成后,它将刷新数据透视表,而数据透视表又将刷新摘要表。由于某些原因,最终数据透视表没有被刷新。它将正常刷新

尝试的方法:

一,

二,

三,

在刷新数据透视表之前,在刷新数据透视表之后,我尝试了包含一个
DoEvents

我还尝试将该文件复制到另一个文件,并在那里重新创建它。效果保持不变,只需移动到它认为最后创建的透视表。 xlsb的文件大小为279Kb,xlsm的文件大小为336KB。
这些表的数据来自SQL server 2012,所有表都位于同一张excel工作表中。表已更新,但数据透视未更新。

请尝试类似的操作

Sub refreshTables()
Dim pt As PivotTable
Dim ws As Worksheet
For Each ws In Worksheets
    For Each pt In ws.PivotTables
        pt.RefreshTable
    Next pt
Next ws
End Sub

只是一个想法。。。如果在数据刷新后放入一个硬的
应用程序.Wait
语句会怎么样?如果
应用程序.Wait
不成功会怎么样。添加
MsgBox
并以这种方式强制等待也无济于事。请在刷新之前尝试(重新)设置代码中透视的数据源范围。@PankajR,
Sheets(“Pivots”).PivotTables(“Pivot1”).PivotCache.SourceData=“Table1”
(等)-没有更改可能是因为该特定表的数据没有更改,因此进行了刷新,但您没有注意到差异?我不认为您已关闭自动计算。我已将其关闭,但在刷新透视表之后,我执行以下命令序列:
Application.calculationLRebuild:Application.screenUpdate=True:Application.Calculation=xlCalculationAutomatic
如果继续计算,是否会产生影响?否,并且在完全重新计算后刷新也不起作用。
Sheets("Pivots").PivotTables("Pivot1").PivotCache.Refresh
Sheets("Pivots").PivotTables("Pivot2").PivotCache.Refresh
Sheets("Pivots").PivotTables("Pivot3").PivotCache.Refresh
Sheets("Pivots").PivotTables("Pivot4").PivotCache.Refresh
ThisWorkbook.RefreshAll
Sub refreshTables()
Dim pt As PivotTable
Dim ws As Worksheet
For Each ws In Worksheets
    For Each pt In ws.PivotTables
        pt.RefreshTable
    Next pt
Next ws
End Sub