2017-06-21 314 views
0

我一直在Excel 2016(64位版本)中記錄/寫入宏。我需要在它的最後創建一個數據透視表。我在我的電腦上嘗試了四種不同的方式,它們都可以工作。運行時錯誤5有時在VBA創建數據透視表

不過!當我將文件發送給其他用戶時,數據透視表部分總是失敗,並始終返回

運行時錯誤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) 
+1

6版是2016年的Excel也許你應該使用5版爲Excel 2013? –

+0

查看[PivotCaches.Create方法](https://msdn.microsoft.com/VBA/Excel-VBA/articles/pivotcaches-create-method-excel)及其對'Version'的枚舉[[XlPivotTableVersionList Enumeration] (https://msdn.microsoft.com/VBA/Excel-VBA/articles/xlpivottableversionlist-enumeration-excel) –

回答

0

我有同樣的問題,我意識到,你應該用你的PivotTableCache的Excel的2013,當您更改和/或創建數據透視緩存是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