1
我试图自动尝试在Excel中更改数据透视表的“数据源”。我尝试了大部分(如果不是所有Google/Stack Overflow上可用的解决方案)。但是我不断遇到以下错误。使用VBA更改数据透视表数据源
Run-time error '5':
Invalid procedure call or argument
这是我运行失败的代码。
Sub UpdateResourcePivots()
Dim pivotDataSheet As Worksheet
Dim dataSheet As Worksheet
Dim pivotLocation As String
Dim pivotDesignation As String
Dim startPoint As Range
Dim endPoint As Range
Dim dataRange As Range
Dim newRange As String
Dim lastRow As Integer
Dim newPivotCache As PivotCache
Set pivotDataSheet = ThisWorkbook.Worksheets("PivotData")
Set dataSheet = ThisWorkbook.Worksheets("Team Information")
pivotLocation = "pvtResourceLocation"
pivotDesignation = "pvtResourceDesignation" 'Dont worry about this one for now
Set startPoint = dataSheet.Range("A5")
lastRow = dataSheet.Range("A" & dataSheet.Rows.count).End(xlUp).row
Set endPoint = dataSheet.Range("O" & lastRow)
Set dataRange = dataSheet.Range(startPoint, endPoint)
newRange = "'" & dataSheet.name & "'!" & dataRange.Address(RowAbsolute:=True, ColumnAbsolute:=True, ReferenceStyle:=xlR1C1, External:=True)
' newRange = "'" & dataSheet.name & "'!" & dataRange.Address(ReferenceStyle:=xlR1C1) ' Tried this as well
Set newPivotCache = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=newRange, Version:=xlPivotTableVersion10)
With pivotDataSheet
.PivotTables(pivotLocation).ChangePivotCache newPivotCache 'Error thrown here.
End With
End Sub
将引发错误的下面一行:
.PivotTables(pivotLocation).ChangePivotCache newPivotCache
其他一些信息
我使用的MS Office 2010(行货)。 我有一个数据源(一个有20行和8列的小表;行会增长,因此宏)。在另一张纸上创建了两个数据透视表。在第三张纸上,我使用Slicers过滤数据(仪表板)。
我已经接受了这个作为一个答案,因为我正在努力简化代码,我也纳入你的建议,它的工作。 但是我不认为这是唯一的答案,因为我使用上面的代码(因为这是互联网上最推荐的代码),它一直让我失望。我想我已经过了复杂的范围。无论如何感谢帮助@Rory –