刷新数据透视表的运行时错误1004

我创buildmacros将刷新工作表中的所有数据透视表。 相同的代码在一张纸上工作,但不在另一张纸上。 我试图在debugging模式下运行它,并且对于前几个表格可以正常工作,并且在中间的一个中间会出错:

运行时错误“1004”:数据透视表类的RefreshTable方法失败。

在这张表里有20张数据透视表,但是它的工作地点是26.你的帮助将会非常感谢。

Sub Refresh_Pivots2() Dim PL As PivotTable Worksheets("Incidents Pivots").Activate For Each PL In ActiveSheet.PivotTables PL.RefreshTable Next PL End Sub 

我只是尝试另一个代码

 Sub Refresh_Incidents() Worksheets("Incidents Pivots").Activate Dim A A = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20") For i = 0 To 19 ActiveSheet.PivotTables(A(i)).RefreshTable Next i End Sub 

如果我从i = 0开始,它会给出一个错误,但是当把它切换到i = 1时,它会起作用。 任何想法这个表有什么问题。 我能够手动刷新它。

正如Rory所说,一个表的源数据有问题,它使用A1而不是R1C1表示法。 我改变了它在Excel选项 – >公式 – > R1C1参考风格,现在macros工程。

你检查了数据透视表数据源。 也有一段时间这种问题是由于枢轴caching发生的。 在刷新枢轴之前调用下面的代码。

 Sub PivotCacheClear()    Dim pc As PivotCache    Dim ws As Worksheet    With ActiveWorkbook        For Each pc In .PivotCaches            pc.MissingItemsLimit = xlMissingItemsNone        Next pc    End With End Sub 

我有一个代码,可以自动调整数据透视表中的数据,然后刷新数据透视表,也许它可以halp你:

 Sub AdjustPivotDataRange(ByVal SheetName As String) Dim Data_sht As Worksheet Dim Pivot_sht As Worksheet Dim StartPoint As Range Dim DataRange As Range Dim PivotName As String Dim NewRange As String Sheets("All 2014 to Current Date").Visible = True 'Set Variables Equal to Data Sheet and Pivot Sheet Set Data_sht = Worksheets("All 2014 to Current Date") Set Pivot_sht = Worksheets(SheetName) 'Enter in Pivot Table Name PivotName = "PivotTable1" 'Dynamically Retrieve Range Address of Data Set StartPoint = Data_sht.Range("A6") LastRow = Data_sht.Cells(Rows.Count, 1).End(xlUp).Row LastColumn = Data_sht.Cells(LastRow, Columns.Count).End(xlToLeft).Column Data_sht.Activate Set DataRange = Data_sht.Range(StartPoint, Cells(LastRow, LastColumn)) NewRange = Data_sht.Name & "!" & _ DataRange.Address(ReferenceStyle:=xlR1C1) 'Make sure every column in data set has a heading and is not blank (error prevention) If WorksheetFunction.CountBlank(DataRange.Rows(1)) > 0 Then MsgBox "One of your data columns has a blank heading." & vbNewLine _ & "Please fix and re-run!.", vbCritical, "Column Heading Missing!" Exit Sub End If 'Change Pivot Table Data Source Range Address Pivot_sht.PivotTables(PivotName).ChangePivotCache _ ActiveWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:=NewRange) 'Ensure Pivot Table is Refreshed Pivot_sht.PivotTables(PivotName).RefreshTable Sheets("Rolling 12-mo.").Select Sheets("All 2014 to Current Date").Visible = False 'Complete Message 'MsgBox PivotName & "'s data source range has been successfully updated!" End Sub 

'connection property'=>'usage'=>'启用后台刷新',请确定它没有被选中。