2013-02-25 102 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