一个工作表有几个数据透视表。目前,数据透视表的源数据正在使用 ADO 从访问表中检索并填充到工作表中。然后将工作表中的范围用作数据透视表的源。我正在尝试直接从 MS-Access 将数据透视表的源更改为 SQL 查询(即从表中选择 *)。以下代码运行良好(连接字符串由函数返回,并显示在代码下方)。
Sub PivotTableDataADO()
'Late Binding
Dim strConnectString As String
Dim cn As Object
Dim rs As Object
Dim qry As String
Dim ws As Worksheet
Dim pt As PivotTable
Dim pvc As PivotCache
Set ws = ThisWorkbook.Sheets("DashBoard")
'Connect Database
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
qry = "SELECT * FROM CallData;"
cn.Open AccessCode.strConnectString
rs.Open qry, cn
Set pvc = ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal)
Set pvc.Recordset = rs
For Each pt In ws.PivotTables
pt.PivotCache.SourceData = rs
pt.PivotCache.Refresh
pt.RefreshTable
Next pt
End Sub
代码在“pt.PivotCache.SourceData = rs”行失败,并显示错误消息“参数数量错误。已经尝试过 PivotCache 的其他属性但没有运气。
ConnectionString 是:strConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\rspai.mdb;Jet OLEDB:Database Password=xxxx;
如何更正此问题并将 SQL 查询作为现有数据透视表的 SourceData?我也可以接受另一种方法。
在此先感谢您的帮助。