使用VBA和ADO将Excel数据透视表的来源从工作表范围更改为SQL查询

一张纸有几个枢轴表。 目前,使用ADO从Access表中检索数据透视表的源数据,并将其填充到工作表中。 然后,工作表中的范围将用作数据透视表的来源。 我试图将数据透视表的来源直接从MS-Access更改为SQL查询(即从表中select*)。 下面的代码运行良好(Connectionstring由函数返回,并显示在代码下面)。

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? 我也可以用另一种方法。

先谢谢您的帮助。

Interesting Posts