Excel 数据透视字段集合

Excel 数据透视字段集合,excel,excel-2010,vba,Excel,Excel 2010,Vba,我正试图: 将数据透视表.PivotFields集合对象复制到临时 一个 对临时文件执行一些更改 然后将原始数据透视表.PivotFields集合设置为指向 新的数据透视字段集合 我正在尝试使用以下代码。当我尝试使用“新数据透视字段”时,在指示行上出现编译错误。我做错了什么?任何帮助都将受到感谢 Public Sub ChangePivotTable() Dim objPivotTable As PivotTable Dim objPivotFields As PivotFie

我正试图:

  • 将数据透视表.PivotFields集合对象复制到临时 一个
  • 对临时文件执行一些更改
  • 然后将原始数据透视表.PivotFields集合设置为指向 新的数据透视字段集合
  • 我正在尝试使用以下代码。当我尝试使用“新数据透视字段”时,在指示行上出现编译错误。我做错了什么?任何帮助都将受到感谢

    Public Sub ChangePivotTable()
    
        Dim objPivotTable As PivotTable
        Dim objPivotFields As PivotFields
        Dim objTempPivotFields As PivotFields
    
        'Get Pivot Table from worksheet
        Set objPivotTable = Worksheets("PivotTableWorksheet").PivotTables(1)
        'Set reference to PivotFields Collection of PivotTable
        Set objPivotFields = objPivotTable.PivotFields
    
        'Compile error: Invalid use of New Keyword
        Set objTempPivotFields = New PivotFields
    
        'Pass Collection by Value
        Let objTempPivotFields = objPivotFields 
    
        'Make changes to Temporary PivotFields Collection
        Dim intIndex As Integer
        For intIndex = 6 To 2156
    
            objTempPivotFields(intIndex).Orientation = xlDataField
            objTempPivotFields(intIndex).Function = xlAverage
    
        Next intIndex
    
        'Set original PivotFields Collection to temporary one
        Set objPivotFields = objTempPivotFields
    
    End Sub
    

    为什么不对当前的透视字段进行更改呢?因为表中有2100多个字段。我当前使用的代码更改了原始数据透视字段的方向和函数属性。这会触发整个透视表每次重新计算。由于数据量太大,需要花费数小时。这里有一篇关于关闭重新计算的帖子:。我99.5%确定你不能像你正在尝试的那样交换整个字段集。我尝试单击“延迟布局更新”复选框,但在尝试设置方向属性时出现错误。我不知道有一个单独的方式使用VBA。我明天试试。多谢道格。@Douglancy:我想你应该给出你的评论作为回答(在看到你的评论之前,我正准备写同样的评论);-)