DefaultVersion的无效过程或调用参数:= xlPivotTableVersion14

时间:2017-03-04 14:49:33

标签: excel vba pivot-table invalid-argument

我已经搜索了无效程序的解决方案或我为 DefaultVersion:= xlPivotTableVersion14 获得的调用参数。我只找到了一个与在不同版本的excel之间运行代码相关的答案。我只是在2010年运行这个,所以我不确定为什么会发生这种情况 任何帮助表示赞赏! 这是代码。

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "Dog Report!R1C1:R243C54", Version:=xlPivotTableVersion14). _
    CreatePivotTable TableDestination:="Pets!R2C1", TableName:= _
    "PivotTable1", DefaultVersion:=xlPivotTableVersion14

1 个答案:

答案 0 :(得分:0)

首先确保表格" Dog Report"包含来自A1:BB1的数据作为数据透视表的字段名称SourceData:= "Dog Report!R1C1:R243C54"表示源数据来自工作表中的A1:BB243" Dog Report"。顺便说一句:参考应该更好SourceData:= "'Dog Report'!R1C1:R243C54"。请注意引号中的工作表名称,因为它包含空格。

另外请确保工作表中没有TableName:= "PivotTable1"的数据透视表" Pets"。

为此,你可以编码:

Dim pvtTable As PivotTable
Dim bPivotTable1Exists As Boolean

With ActiveWorkbook

 With .Worksheets("Pets")
  For Each pvtTable In .PivotTables
   If pvtTable.Name = "PivotTable1" Then
    bPivotTable1Exists = True
   End If
  Next
 End With

 If Not bPivotTable1Exists Then
  .PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "'Dog Report'!R1C1:R243C54", Version:=xlPivotTableVersion14). _
    CreatePivotTable TableDestination:="Pets!R2C1", TableName:= _
    "PivotTable1", DefaultVersion:=xlPivotTableVersion14
 Else
  'do something if pivot table already exists
 End If

End With

如果仍然失败,请确保工作表" Pets"不包含新数据透视表所需范围内的数据。但这不会引发错误,但会导致确认对话框。

此外:表格" Pets"必须存在并且是工作表而不是图表。

如果仍然失败,我会分两部分进行创作。一个用于透视缓存,另一个用于透视表。所以我们可以确定究竟是什么失败了:

Dim pvtCache As PivotCache
Dim pvtTable As PivotTable
Dim bPivotTable1Exists As Boolean

With ActiveWorkbook

 With .Worksheets("Pets")
  For Each pvtTable In .PivotTables
   If pvtTable.Name = "PivotTable1" Then
    bPivotTable1Exists = True
   End If
  Next
 End With

 If Not bPivotTable1Exists Then
  Set pvtCache = .PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "'Dog Report'!R1C1:R243C54", Version:=xlPivotTableVersion14)

  With .Worksheets("Pets")
   .Range("A2:C19").ClearContents
  End With

  Set pvtTable = pvtCache.CreatePivotTable(TableDestination:="Pets!R2C1", TableName:= _
    "PivotTable1", DefaultVersion:=xlPivotTableVersion14)
 Else
  'do something if pivot table already exists
 End If

End With