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

时间:2016-07-24 04:44:27

标签: excel vba

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

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有关,但我尝试改变它,我仍然得到相同的运行时错误。有点不知道现在如何进行,所以如果有人发现错误或提供建议,将非常感激

1 个答案:

答案 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