2014-04-16 107 views
1

我有一个vba代码,它可以根据从其他工作簿复制到当前工作簿的一些数据自动创建数据透视表。当我在我的机器上运行它时,它很好。另一个人有没有问题,或者说,但一个女人获得有关“运行时错误‘5’:无效的过程调用或参数”的错误,并重点介绍了我的代码Excel 2010 vba不能在Excel 2012中工作

"ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
    "WorkRange", Version:=xlPivotTableVersion14).CreatePivotTable _ 
    TableDestination:=ActiveSheet.Cells(3,1), TableName:="PivotTable2", DefaultVersion _ 
    :=xlPivotTableVersion14 

我的代码将新数据并每次重命名为“调用数据 - 日期时间”,并且每次在新工作表上创建一个新的数据透视表,所以我不认为这是表名导致问题,尤其是因为它对我来说运行良好。她是唯一有问题的人。有任何想法吗?

这里是所有的代码:

Sub GeneratePivot() 
' 
' Macro11 Macro 
' 
    Dim myDate As Date, aDate 
    myDate = Date + 7 - Weekday(Date) 
    aDate = Format(myDate, "mm.dd.yyyy") 

    Dim LValue As Date 
    LValue = Now 

    Range("A1").Select 
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select 

    ActiveWorkbook.Names.Add Name:="WorkRange", RefersTo:=Selection 
    Range("C5").Select 
    Application.Goto Reference:="WorkRange" 
    Sheets.Add 
    ActiveSheet.Name = "SummaryData " & Format(DateTime.Now, "MM.dd.yy hh.mm.ss") 

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
     "WorkRange", Version:=xlPivotTableVersion14).CreatePivotTable _ 
     TableDestination:=ActiveSheet.Cells(3, 1), TableName:="PivotTable2", DefaultVersion _ 
     :=xlPivotTableVersion14 
    ActiveSheet.Select 
    Cells(3, 1).Select 

    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Month") 
     .Orientation = xlColumnField 
     .Position = 1 
    End With 

    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Site/Location") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 

    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Called Number") 
     .Orientation = xlRowField 
    End With 

    ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables(_ 
     "PivotTable2").PivotFields("Called Number"), "Count of Called Number", xlCount 

    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Site/Location") 
     .PivotItems("#N/A").Visible = False 
    End With 

    Columns("A:A").Select 
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 

End Sub 

所以我怀疑线路更新为:

Dim PC As PivotCache 
Dim pt As PivotTable 

Set PC = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
     "WorkRange", Version:=xlPivotTableVersionCurrent) 

Set pt = PTCache.CreatePivotTable _ 
     (TableDestination:=ActiveSheet.Cells(3, 1), _ 
     TableName:="PivotTable1", _ 
     DefaultVersion:=xlPivotTableVersionCurrent) 

PC.CreatePivotTable TableDestination:=ActiveSheet.Cells(3, 1), TableName:="PivotTable1", DefaultVersion _ :=xlPivotTableVersionCurrent 

它failes设置PC上。我也尝试过xlPivotTableVersion15,但也失败了。

+1

有很多去在这一行中,所以一个好的开始可能是将其分解成单独的行,它们首先创建PivotCache然后创建数据透视表。 –

+0

她是否打开启用宏的工作表? http://office.microsoft.com/en-001/excel-help/enable-or-disable-macros-in-office-files-HA010354316.aspx – smoore4

+0

@SQLDBA - 她得到一个运行时错误,所以宏启用... –

回答

0

我认为这个问题是因为版本的数据透视表的即本节:
Version:=xlPivotTableVersion14
Version14是Excel 2010中,我不知道是什么版本号是在2012年
尝试将其更改为:
DefaultVersion:=xlPivotTableVersionCurrent并查看它是否运行。

这里是一个列表(取自:http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlpivottableversionlist(v=office.15).aspx)与可用版本。我没有看到的Excel 2012在那里,所以你的里程可能会有所不同:

xlPivotTableVersion2000指的是Excel 2000中
xlPivotTableVersion10指的是Excel 2002中
xlPivotTableVersion11指的是Excel 2003中
xlPivotTableVersion12指的是Excel 2007中
xlPivotTableVersion14指到Excel 2010
xlPivotTableVersion15指到Excel 2013
xlPivotTableVersionCurrent指的是仅提供用于向后兼容