使用宏录制器,我生成了以下代码来添加数据透视表:
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Step 1!R1C1:R30750C34", Version:=6).CreatePivotTable TableDestination:= _
"Pivot Table 2!R1C1", TableName:="PivotTable3", DefaultVersion:=6
Sheets("Pivot Table 2").Select
Cells(1, 1).Select
With ActiveSheet.PivotTables("PivotTable3").PivotFields("STOCK NUMBER")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _
"PivotTable3").PivotFields("DUO QTY"), "Sum of DUO QTY", xlSum
ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _
"PivotTable3").PivotFields("Excess"), "Sum of Excess", xlSum
ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _
"PivotTable3").PivotFields("Cann"), "Sum of Cann", xlSum
然后我做了一个更改,因此sourceData的行号是动态的而不是固定的:
Sheets("Step 1").Activate
Step1Rows = Sheets("Step 1").UsedRange.Rows.Count
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Step 1!R1C1:R" & Step1Rows & "C34", Version:=6).CreatePivotTable TableDestination:= _
"Pivot Table 2!R1C1", TableName:="PivotTable3", DefaultVersion:=6
当我运行此代码时,我收到运行时错误5,无效的过程调用或参数。经过进一步调查,如果我尝试运行录制的代码,我会收到同样的错误。我最初认为它与硬编码的tableName有关,但我尝试改变它,我仍然得到相同的运行时错误。有点不知道现在如何进行,所以如果有人发现错误或提供建议,将非常感激
答案 0 :(得分:1)
这里有多个问题。
首先:宏录制器在TableDestination:= "Pivot Table 2!R1C1"
中的工作表名称出错了。由于名称中包含空格,因此必须为TableDestination:= "'Pivot Table 2'!R1C1"
。请注意单引号中的名称。
第二:您无法在已包含数据透视表的单元格区域中创建新的数据透视表。因此,您必须首先删除旧的数据透视表,或者必须更新已存在的数据透视表。
如果表格" Pivot表2"只包含这个数据透视表而没有别的,那么最简单的事情就是:
Step1Rows = ActiveWorkbook.Worksheets("Step 1").UsedRange.Rows.Count
ActiveWorkbook.Worksheets("Pivot Table 2").Cells.Delete
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Step 1!R1C1:R" & Step1Rows & "C34", Version:=6).CreatePivotTable TableDestination:= _
"'Pivot Table 2'!R3C1", TableName:="PivotTable3", DefaultVersion:=6