1. 程式人生 > 其它 >excel vba 阻塞 先重新整理 連線 再 重新整理所有透視表

excel vba 阻塞 先重新整理 連線 再 重新整理所有透視表

技術標籤:總結

程式碼用途

先重新整理所有連線 然後重新整理所有表

這裡的連線是指資料是從遠端連線重新整理過來的 比如遠端mysql伺服器 hive等等

連線後的表格可以通過透視表和透檢視給公司製作一系列報表或者圖表展示 但是每次資料庫資料更新後點擊全部重新整理 由於外部連線耗時比較久 導致table還沒重新整理 透視表就重新整理了 所以這裡需要手動設定透視表必須在table(連線的資料)重新整理之後再重新整理

vba程式碼

Sub 先重新整理連線後重新整理所有表()


    For Each objConnection In ThisWorkbook.Connections
        'Get current background-refresh value
        bBackground = objConnection.OLEDBConnection.BackgroundQuery

        'Temporarily disable background-refresh
        objConnection.OLEDBConnection.BackgroundQuery = False

        'Refresh this connection
        objConnection.Refresh

        'Set background-refresh value back to original value
        objConnection.OLEDBConnection.BackgroundQuery = bBackground
    Next

    MsgBox "Finished refreshing all data connections"


Dim PT As PivotTable
Dim WS As Worksheet

    For Each WS In ThisWorkbook.Worksheets

        For Each PT In WS.PivotTables
          PT.RefreshTable
        Next PT

    Next WS

MsgBox ("Finished refresh all pivotTable")
End Sub