【问题标题】:Invalid Procedure Call or Argument when Creating a Pivot Table创建数据透视表时过程调用或参数无效
【发布时间】:2013-06-10 09:13:41
【问题描述】:

试图从一组数据中创建一个数据透视表。通常它第一次运行良好,但如果您尝试再次运行它,它会抛出“无效的过程调用或参数”,并且当您单击调试时,代码会突出显示以下问题。更改数据透视表的名称没有帮助。工作表 2 存在并填充了数据。数据摘要表也存在并且完全为空

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "Sheet2!R1C1:R1064C4", Version:=xlPivotTableVersion14).CreatePivotTable _
    TableDestination:="Data-Summary!R5C1", TableName:="PivotTable4", _
    DefaultVersion:=xlPivotTableVersion

整个代码如下:

Sub Macro1()
'
' Macro1 Macro
'

'
    Columns("A:D").Select
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Sheet2!R1C1:R1064C4", Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="Data-Summary!R5C1", TableName:="PivotTable15", _
        DefaultVersion:=xlPivotTableVersion14
    Sheets("Data-Summary").Select
    Cells(5, 1).Select
    ActiveWorkbook.ShowPivotTableFieldList = True
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Site")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Channel")
        .Orientation = xlColumnField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _
        "PivotTable3").PivotFields("Cost"), "Count of Cost", xlCount
    ActiveSheet.PivotTables("PivotTable3").PivotFields("Count of Cost"). _
        Orientation = xlHidden
    ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _
        "PivotTable3").PivotFields("Revenue"), "Count of Revenue", xlCount
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Count of Revenue")
        .Caption = "Sum of Revenue"
        .Function = xlSum
    End With
    ActiveWorkbook.ShowPivotTableFieldList = False
End Sub

【问题讨论】:

    标签: excel vba pivot-table


    【解决方案1】:

    更改 tabledestination 以在工作表名称周围添加引号

    TableDestination:="'Data-Summary'!R5C1"
    

    还有一些代码是不必要的

    Sub Macro1()
    '
    ' Macro1 Macro
    '
    
    '
       Dim PT                     As Excel.PivotTable
       Set PT = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
                                                  "Sheet2!R1C1:R1064C4", Version:=xlPivotTableVersion14).CreatePivotTable( _
                                                  TableDestination:="'Data-Summary'!R5C1", TableName:="PivotTable15", _
                                                  DefaultVersion:=xlPivotTableVersion14)
       With PT
          With .PivotFields("Site")
             .Orientation = xlRowField
             .Position = 1
          End With
          With .PivotFields("Channel")
             .Orientation = xlColumnField
             .Position = 1
          End With
          .AddDataField .PivotFields("Revenue"), "Sum of Revenue", xlSum
       End With
    End Sub
    

    【讨论】:

      【解决方案2】:

      对我来说,升级到更新版本的 Excel 后出现此错误,因为它在使用 CreatePivotTable 函数创建数据透视表时无法识别 DefaultVersion 参数 xlPivotTableVersion15 枚举。

      这对我不起作用,它与空格或目的地名称无关:

      Workbooks(WorkbookName).PivotCaches(1).CreatePivotTable _
          TableDestination:=DestinationString, TableName:=TableNameString, _ 
          DefaultVersion:=xlPivotTableVersion15 
      

      这是工作版本:

      Workbooks(WorkbookName).PivotCaches(1).CreatePivotTable _
          TableDestination:=DestinationString, TableName:=TableNameString, _ 
          DefaultVersion:=6
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多