创build数据透视表时无效的过程调用或参数

试图从一组数据中创build一个数据透视表。 通常它第一次运行良好,但是如果你第二次尝试运行它,它会抛出一个“无效的过程调用或参数”,当你点击debugging时,代码会突出显示下面的问题。 更改数据透视表的名称不起作用。 工作表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 

更改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