没有什么比透视表更让我对VBA感到沮丧了。我只想使用VBA为数据透视表指定数据源。
Dim pvtcache As PivotCache
Dim Range1 As Range
ActiveSheet.PivotTables("PivotTable4").ChangePivotCache _
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
ThisWorkbook.Worksheets("Business Process Identification").Range("A1:Bc1693").Address(ReferenceStyle:=xlR1C1) _
, Version:=6)
我正在尝试从SP站点打开工作簿,然后引用数据源的数据,刷新,然后关闭工作簿。
我收到一个运行时错误“ -2147024809”,内容为: “数据透视表字段名称无效。要创建数据透视表报表,必须使用组织为带有标签列的列表的数据。如果要更改数据透视表字段的名称,则必须为该字段键入一个新名称。”
如果我手动将数据源更改为代码中指定的范围,则只有在运行此宏时才没有问题。
注意:现在的参考数据在同一工作簿中,并且出现相同的错误。 注意:我没有隐藏的列或行,我的所有列标题都正确标记,这是导致此问题的常见原因
答案 0 :(得分:0)
尝试了许多不同的方法和变体之后,我发现如果将所需范围转换为表并使用“ ListObjects”,则更改数据透视表上的源数据将起作用:
Workbooks("SubLOBs").Worksheets("APQCL2").PivotTables("PivotTable4").ChangePivotCache _
Workbooks("SubLOBs").PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
ThisWorkbook.Worksheets("Business Process Identification").ListObjects("Table1"))
我不知道为什么。我不知道为什么名为“ SourceData”的参数不能简单地引用范围,而必须在表中并称为列表对象。数据透视表可能会吮吸鸡巴。