通过VBA创build数据透视表时出错

使用macroslogging器,我生成以下代码来添加数据透视表:

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的行号是dynamic的而不是固定的:

 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,无效的过程调用或参数。 经过进一步调查,如果我尝试运行logging的代码,我会得到相同的错误。 我最初以为它必须与硬编码的tableName,但我试图改变,我仍然得到相同的运行时错误。 不知道现在该怎么处理,所以如果有人能够发现错误或者提供build议,我们将非常感激

这里有多个问题。

第一:macroslogging器在TableDestination:= "Pivot Table 2!R1C1"的表名错误TableDestination:= "Pivot Table 2!R1C1" 。 由于名称中包含空格,因此必须使用TableDestination:= "'Pivot Table 2'!R1C1" 。 请注意单引号内的名称。

第二:您不能在已经包含数据透视表的单元格范围内创build新的数据透视表。 因此,要么必须首先删除旧的数据透视表,要么必须更新已经存在的数据透视表。

如果表“透视表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