更改数据透视表数据源

时间:2019-06-11 14:03:26

标签: excel vba

没有什么比透视表更让我对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”,内容为: “数据透视表字段名称无效。要创建数据透视表报表,必须使用组织为带有标签列的列表的数据。如果要更改数据透视表字段的名称,则必须为该字段键入一个新名称。”

如果我手动将数据源更改为代码中指定的范围,则只有在运行此宏时才没有问题。

注意:现在的参考数据在同一工作簿中,并且出现相同的错误。 注意:我没有隐藏的列或行,我的所有列标题都正确标记,这是导致此问题的常见原因

1 个答案:

答案 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”的参数不能简单地引用范围,而必须在表中并称为列表对象。数据透视表可能会吮吸鸡巴。