我一直在Excel 2016,64位版本中录制/编写宏。我需要在它的末尾创建一个数据透视表。我在计算机上尝试了四种不同的方式,它们都可以工作。
无论其!当我将文件发送给另一个用户时,数据透视表部分总是失败,它总是返回
运行时错误5:无效的过程调用或参数。
其他用户位于虚拟桌面(Windows 2008 R2)和Office 2013(32位版本)上。
我研究了这个问题,这就是为什么我在下面有这么多不同的代码,但无论我做什么,其他用户都会得到运行时错误5 。同样,所有这些都按计划在我的计算机上工作,所以我假设有一个版本问题,但我承认我在这一点上猜测。我错过了什么?
宏录制器代码:
Range("A1").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Table1", Version:=6).CreatePivotTable TableDestination:="Summary!R1C1", _
TableName:="PivotTable3", DefaultVersion:=6
我在网上找到的最常见修复方法:
Range("A1").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Table1", Version:=6).CreatePivotTable TableDestination:="'Summary'!R1C1", _
TableName:="PivotTable3", DefaultVersion:=6
我在网上找到的第二个最常见的解决方法:
Range("A1").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Table1", Version:=6).CreatePivotTable TableDestination:=ActiveWorkbook.Worksheets("Summary").Range("$A$1"), _
TableName:="PivotTable3", DefaultVersion:=6
我甚至试图通过将现有的数据透视表导入新工作簿然后更新数据透视图获取其数据的位置来作弊,但我仍然得到运行时错误5 。
ActiveSheet.PivotTables("PivotTable3").ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Table1", Version:=6)
答案 0 :(得分:0)
我遇到了同样的问题,我意识到您应该使用Excel 2013上可用的最新版本的PivotTableCache,当您更改和/或创建数据透视缓存时,这个版本为15。
这样的事情:
Dim Wkb As Workbook, Wks As Worksheet, rDB As Range
Dim sSheet as String, sPvt as String
sSheet = "[SheetName]"
sPvt = "[PivotTableName]"
Set Wkb = ThisWorkbook
Set Wks = Wkb.Worksheets(sSheet)
Set rDB = Wks.Range("A1:I2500")
WksI.PivotTables(sPvt).ChangePivotCache Wkb. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rDB, _
Version:=xlPivotTableVersion15) '' This is the line you need to change
'' Excel 2010 Version:=xlPivotTableVersion14
'' Excel 2013 Version:=xlPivotTableVersion15
答案 1 :(得分:0)
我有同样的问题。我可以 DefaultVersion:= xlPivotTableVersion12,而不是Version:= xlPivotTableVersion12