刷新在Excel VBA中(ADODB连接)创建的透视表
我可以成功地创建在Excel VBA中2010用下面的代码,其中所述数据来自一个MS访问数据库中的数据透视表,刷新在Excel VBA中(ADODB连接)创建的透视表
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=H:\SQL.accdb"
rs.Open "SELECT * FROM Table1", con, adOpenStatic, adLockReadOnly
Set piv = ActiveWorkbook.PivotCaches.Create(xlExternal)
Set piv.Recordset = rs
piv.CreatePivotTable TableDestination:=Range("A1"), TableName:="P2"
con.Close
Set rs = Nothing
Set con = Nothing
但我当我改变记录集的SQL代码,然后枢轴不能被刷新。事实上,数据透视表必须被删除和创建。有没有办法我可以这样创建数据透视表并刷新数据而不删除数据透视表。
以上回答不太我是什么样子的为不同的用户会从数据库中查询和将要使用的参数为好,这可能会导致问题,当在同一时间多个用户查询。但我确实找到了解决我的问题的方法。
我在我的问题放在上面的代码,我可以用它来最初创建我的支点,并通过把所有的数据。然后我建立一个独立的子,可以刷新数据透视表(如下所示),
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=H:\SQL.accdb"
rs.Open "SELECT * FROM Table1", con, adOpenStatic, adLockReadOnly
With Sheets(1).PivotTables("P2").PivotCache
Set .Recordset = rs
.Refresh
End With
Set rs = Nothing
con.Close
Set con = Nothing
快速修复,这取决于你平时是怎么更新的SQL代码,如下所示。
在ACCESS,创建一个查询,使用SQL模式为
SELECT * FROM Table1
并将其保存为Query1
在EXCEL,修改代码以
SELECT * FROM Query1
这样,Excel将视为Query1
作为表所有的实际目的,你可能在访问使Query1
那样复杂,只要你愿意,Excel将仍然拉起它的所有内容,使您的代码重用。