我已经搜索了无效程序的解决方案或我为 DefaultVersion:= xlPivotTableVersion14 获得的调用参数。我只找到了一个与在不同版本的excel之间运行代码相关的答案。我只是在2010年运行这个,所以我不确定为什么会发生这种情况 任何帮助表示赞赏! 这是代码。
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Dog Report!R1C1:R243C54", Version:=xlPivotTableVersion14). _
CreatePivotTable TableDestination:="Pets!R2C1", TableName:= _
"PivotTable1", DefaultVersion:=xlPivotTableVersion14
答案 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