从数据透视表中删除报表filter,列标签,行标签和值字段

在我的活动工作表中,我想删除活动工作表中包含的每个数据透视表中的所有字段。

这是我的代码到目前为止:

Sub Hide_Fields() For Each Pvt In ActiveSheet.PivotTables For Each PvtFld In Pvt.PivotFields PvtFld.Orientation = xlHidden Next PvtFld Next Pvt End Sub 

它将删除除值字段以外的所有字段。 我在这里错过了什么?

PivotFields集合似乎排除了仍然可以引用的项目。 例如,这些不会在眼前的窗口中出错:

 ? ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of c") ? ActiveSheet.PivotTables("PivotTable1").PivotFields("Values") 

(请注意,我的数据透视表有一个名为c的列)

但是他们不会输出你的代码:

 For Each fld In pvt.PivotFields Debug.Print fld.Name Next fld 

枚举集合时,为什么不公开这些内容并不清楚。

但是,您可以直接引用数据PivotFields RowFields ,例如RowFieldsColumnFieldsPageFieldsDataFields 。 通过这样做,你可以实现你的目标:

 Option Explicit Sub Test() HideFields ActiveSheet.PivotTables(1) End Sub Sub HideFields(pvt As PivotTable) Dim fld As Object 'rows For Each fld In pvt.RowFields Debug.Print fld.Name fld.Orientation = xlHidden Next fld 'columns For Each fld In pvt.ColumnFields Debug.Print fld.Name fld.Orientation = xlHidden Next fld 'pages For Each fld In pvt.PageFields Debug.Print fld.Name fld.Orientation = xlHidden Next fld 'data For Each fld In pvt.DataFields Debug.Print fld.Name fld.Orientation = xlHidden Next fld End Sub