刷新一个Excel文件VBA 2010中的所有数据透视表

时间:2016-11-24 15:32:12

标签: excel vba excel-vba

您好,请帮我excel 2010 当我运行这个简单的代码时,我收到错误消息:枢轴表类的1004刷新表方法失败

Sub AllWorkbookPivots()
Dim pt As PivotTable
Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets
    For Each pt In ws.PivotTables
        pt.RefreshTable
    Next pt
Next ws

End Sub

3 个答案:

答案 0 :(得分:2)

试试这段代码:

Sub AllWorkbookPivots()
    ActiveWorkbook.RefreshAll()
End Sub

答案 1 :(得分:0)

尝试此操作时,必须删除括号。

ActiveWorkbook.RefreshAll

答案 2 :(得分:0)

如果刷新使用该枢轴缓存的任何枢轴表后与另一个枢轴表对象或其他有界对象重叠,则枢轴刷新将失败。 Excel 会尝试创建额外的行和列来为调整大小的表格腾出空间,但这并不总是那么简单。

在这种情况下,RefreshAll 也将无法更新表。检查包含数据透视表的所有工作表,并尝试确保每个数据透视表在需要时都有可扩展的空间。

如果您不确定哪个表使用哪个缓存,可以使用以下脚本:

Sub PivotInfo()
    Dim i As Integer, wSheet As Worksheet, pTable As PivotTable    
    Worksheets.Add
    Range("A1") = "Pivot table name"
    Range("B1") = "Location"
    Range("C1") = "Source information"

    i = 1

    For Each wSheet In Worksheets
        For Each pTable In wSheet.PivotTables
            i = i + 1
            Cells(i, 1).Value = pTable.Name
            Cells(i, 2).Value = wSheet.Name + "!" + pTable.TableRange1.Address
            Cells(i, 3).Value = pTable.SourceData
        Next pTable
    Next wSheet
End Sub