在Excel 2013中创build基于功率数据透视表的数据透视表,但不能在Excel 2010中创build

下面的代码适用于Excel 2013,但并不总是适用于Excel 2010.它会在set pvtSource引发错误。

错误是:

错误引号“运行时错误”-2147417848(80010108)':对象'pivotcache'的方法'createpivottable'失败。

有时它没有抛出错误。 我无法弄清楚为什么或如何使这个代码失败。

 'Create temp sheet Dim wksSource As Worksheet Set wksSource = wbkSource.Sheets.Add(After:=Sheets(Worksheets.Count)) 'Create new cache Dim pvcSource As PivotCache Dim pvtSource As PivotTable If Application.Version = "15.0" Then 'Create pivot cache Set pvcSource = wbkSource.PivotCaches.Create( _ SourceType:=xlExternal, _ SourceData:=ActiveWorkbook.Connections("ThisWorkbookDataModel"), _ Version:=5) wbkSource.Activate wksSource.Activate 'Create PivotTable Set pvtSource = pvcSource.CreatePivotTable( _ TableDestination:=ActiveCell, _ DefaultVersion:=5) ElseIf Application.Version = "14.0" Then 'Create pivot cache Set pvcSource = wbkSource.PivotCaches.Create( _ SourceType:=xlExternal, _ SourceData:=ActiveWorkbook.Connections("ThisWorkbookDataModel"), _ Version:=xlPivotTableVersion14) wbkSource.Activate wksSource.Activate 'Create PivotTable Set pvtSource = pvcSource.CreatePivotTable( _ TableDestination:=ActiveCell, _ DefaultVersion:=xlPivotTableVersion14) End If 

Excel 2010的Power Pivot显式不支持VBA脚本。

这里的Pivot Cache是​​从名为Named_Range的Sheet中名为Sheet_Name的Range中创build的,我把它留给你来重新命名这些以适应你的需要! ;)

 Sub Test_Gring() Dim wB As Workbook, _ wS As Worksheet, _ pC As PivotCache, _ pT As PivotTable, _ bCreated As Boolean For Each wS In wB.Sheets For Each pT In wS.PivotTables If Not bCreated Then pT.ChangePivotCache wB.PivotCaches.Create(SourceType:=xlDatabase, _ SourceData:="'Sheet Name'!" & Range("Named_Range").Address, _ Version:=xlPivotTableVersion14) 'xlPivotTableVersion12 Set pC = pT.PivotCache bCreated = True Else If pT.CacheIndex <> pC.Index Then pT.CacheIndex = pC.Index End If Next pT Next wS 'Save to delete unused Pivot Caches wB.Save End Sub