2014-08-29 94 views
0

我可以成功地創建在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代碼,然後樞軸不能被刷新。事實上,數據透視表必須被刪除和創建。有沒有辦法我可以這樣創建數據透視表並刷新數據而不刪除數據透視表。

回答

1

以上回答不太我是什麼樣子的爲不同的用戶會從數據庫中查詢和將要使用的參數爲好,這可能會導致問題,當在同一時間多個用戶查詢。但我確實找到了解決我的問題的方法。

我在我的問題放在上面的代碼,我可以用它來最初創建我的支點,並通過把所有的數據。然後我建立一個獨立的子,可以刷新數據透視表(如下所示),

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

0

快速修復,這取決於你平時是怎麼更新的SQL代碼,如下所示。

  • 在ACCESS,創建一個查詢,使用SQL模式SELECT * FROM Table1並將其保存爲Query1

  • 在EXCEL,修改代碼以SELECT * FROM Query1

這樣,Excel將視爲Query1作爲所有的實際目的,你可能在訪問使Query1那樣複雜,只要你願意,Excel將仍然拉起它的所有內容,使您的代碼重用。