2013-02-25 132 views
3

我需要創建xlPivotTableVersion10透視表(Excel 2003中兼容)通過,我在我的電腦具有Excel 2007中上運行宏創建一個版本10的數據透視表。 我從源文件運行宏。我有另一個文件(WkbVar),它是.xls,並在[兼容模式]中打開,我想創建幾個數據透視表。我設法創建一個連接到我的外部Access數據庫(DOH位置清單V6),從中獲得我的數據源以及具有此連接的數據透視表(PC)。VBA在xls文件通過Excel 2007中

Set pc = WkbVar.PivotCaches.Create(SourceType:=xlExternal, 
SourceData:=WkbVar.Connections("DOH Location inventory V6") _ 
, Version:=xlPivotTableVersion10) 
With pc 
.CreatePivotTable TableDestination:=WksAlertesVar.Range("A9"),TableName:="PivotTable_0", _ 
DefaultVersion:=xlPivotTableVersion10 
End With 

樞軸緩存似乎創造得很好,但後來我就到」 .CreatePivotTable [...] DefaultVersion:= xlPivotTableVersion10" 類型1004「中定義的應用對象定義」的錯誤路線。

我已經嘗試了幾個變化,這裏是什麼,我得到一個回顧:

  • 樞緩存版本:= xlPivotTableversion10 + 透視表 DefaultVersion:= xlPivotTableversion10 => 1004錯誤

  • 樞軸緩存版:= xlPivotTableversion10 + 樞軸表 DefaultVersion:= xlPivotTableversion12 => 1004錯誤

  • 樞軸緩存版:= xlPivotTableversion12 + 樞軸表 DefaultVersion:= xlPivotTableversion10 => 5錯誤 「無效過程調用」

  • 樞軸緩存版:= xlPivotTableversion12 + 透視表 DefaultVersion:= xlPivotTableversion12 =>工作正常,但會創建一個Excel 2007數據透視表,該表對xls文件中的過濾器和刷新不兼容。

如果我停下已經創建了連接後,宏和手[兼容模式]創建數據透視表,它仍然可以作爲期望:我得到一個Excel 2003數據透視表。這使我認爲我正在嘗試做的事情是可能的,我似乎無法編寫正確的代碼...

如果任何人有任何關於如何在xls文件中創建Excel 2003數據透視表但通過Excel 2007應用程序和VBA,我將非常感謝您的知識共享。

真誠, J.

--------------編輯(以下Karter的評論)

確實存在似乎是使用外部源的問題我的數據透視表。更多的搜索和測試了一下後,我想出了以下解決方法:

With ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, Version:=xlPivotTableVersion10) 
.Connection = Array()'HERE GOES ALL THE DATA RELATIVE TO MY CONNECTION TO THE ACCESS DATABASE 
.CommandType = xlCmdTable 
.CommandText = Array(_ 'here is the SQL string to select some data from a specific table I have in my Access database 
"SELECT *" & Chr(13) & "" & Chr(10) & "FROM [DOH historique avec libelles] WHERE [DOH historique avec libelles]![Numero Site Gestionnaire] = " & NoSite _ 
) 
.MaintainConnection = False 
.CreatePivotTable TableDestination:=ActiveWorksheet.Range("A9"), TableName:="PivotTable_0", DefaultVersion:=xlPivotTableVersion10 
End With 

的時候我會先加只用「DATA相對TO MY連接...」的連接信息,並沒有之前。 CommandType,.CommandText等參數。

我不是很熟悉的連接參數,但我想這招有事情做與Karter強調了外部源的問題。

回答

1

我認爲實際的源連接不兼容 - 如果您使用的xldatabase爲源,它工作正常:

Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Sheet5!R1C1:R2C3", Version:=xlPivotTableVersion10) 

Set pt = pc.CreatePivotTable(Sheet7.[A1], "testpivot1", , xlPivotTableVersion10) 

我知道,當我在Excel 2003中的編碼數據透視表,你不得不手動調整數據透視表的連接字符串,所以我認爲這可能會導致您的問題。我會看看我能否找到一個老例子。

+0

謝謝你花時間看看我的問題。我編輯了我的問題,以報告我對初始代碼所做的一些更改以解決該問題,我認爲這可能確實與您提到的內部/外部源問題有關。 – user1997216 2013-03-19 14:27:38