2017-03-04 29 views
0

我寻找一个解决无效程序,或致电说法,我得到DefaultVersion:= xlPivotTableVersion14。我只找到了一个与在不同版本的excel之间运行代码有关的答案。我只是在2010年运行这个,所以我不知道为什么会发生这种情况。
任何帮助表示赞赏! 这是代码。无效的过程或致电论据DefaultVersion:= xlPivotTableVersion14

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

您确定工作表“Dog Report”包含来自“A1:BB1”的数据作为数据透视表的字段名吗? “SourceData:=”Dog Report!R1C1:R243C54“”表示源数据从表格“狗报告”中的“A1:BB243”开始。顺便说一句:应该更好'SourceData:=''狗报告'!R1C1:R243C54“'。由于它包含一个空格,因此请注意引号中的表名。 –

+0

还要确保,还没有一个使用'TableName:=“PivotTable1”'的透视表。 –

回答

0

在首先确认表“狗报告”包含A1:BB1作为透视表的SourceData:= "Dog Report!R1C1:R243C54"状态源数据从A1:BB243进去片“犬报告”的字段名的数据。顺便说一句:参考应该更好SourceData:= "'Dog Report'!R1C1:R243C54"。由于它包含一个空格,因此请注意引号中的表名。

另外,还要确保,没有已经与工作表“宠物” TableName:= "PivotTable1"透视表。

要做到这一点,你可以编写代码:

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 

如果仍然失败,那么请确保,在工作表“宠物”不包含在新的数据透视表将需要范围的数据。但是这不会引发错误,而是导致确认对话框。

此外:片材“宠物”必须存在,是一个工作表,而不是图片。

如果还是失败了,我会做两个部分的创建过程。一个用于透视缓存,另一个用于透视表。因此,我们可以确定究竟是什么失败:

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 
+0

非常感谢您的回复。是的,我确定来自“A1:BB1”的数据包含数据透视表的字段名称,因为我已将它用于同一工作簿中其他工作表中的其他枢轴。另外,我一直小心,以确保不在已不存在与表名枢轴表:=“PivotTable1”我已经添加了报价,以及不幸的是,我仍然得到无效的程序或致电参数错误消息。你对我怎么能解决这个 –

+0

还有另一个PivotTable1在另一片在使用相同的数据范围内的工作簿的任何其他建议。这可能会导致这个问题吗? –

+0

不,其他工作表可以包含具有相同名称的数据透视表。但看到我的补充提示进一步调试。 –

相关问题