爽やかなすべてのピボットテーブルマexcelのワークブックマクロ

StackOverflow https://stackoverflow.com/questions/70947

  •  09-06-2019
  •  | 
  •  

質問

私はワークブックは20の異なるピボットテーブル.が簡単ですべてのピボットテーブルリフレッシュしVBA?

役に立ちましたか?

解決

そうです。

ThisWorkbook.RefreshAll

やめたい場合、エクセル版には古いですが、

Dim Sheet as WorkSheet, Pivot as PivotTable
For Each Sheet in ThisWorkbook.WorkSheets
    For Each Pivot in Sheet.PivotTables
        Pivot.RefreshTable
        Pivot.Update
    Next
Next

他のヒント

このVBAコードでリフレッシュすべてのピボットテーブル/チャートのワークブック.

Sub RefreshAllPivotTables()

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

End Sub

他の非programaticオプション:

  • 右のをクリックするとピボットテーブル
  • 選択テーブルオプション
  • チェックを 'リフレッシュオープン" オプションです。
  • をクリックOKボタン

これをリフレッシュピボットテーブルの各時間のワークブックを開きます。

ActiveWorkbook.RefreshAll 更新のものになピボットテーブルにもODBCます。私はカップルのVBAのクエリを参照するデータ接続、このオプションを使用クラッシュとしてのコマンドにデータ接続の詳細から供給されるVBA

私のおすすめのオプションが、ピボットリフレッシュ

Sub RefreshPivotTables()     
  Dim pivotTable As PivotTable     
  For Each pivotTable In ActiveSheet.PivotTables         
    pivotTable.RefreshTable     
  Next 
End Sub 

特定の状況下するための差別化とPivotTableとそのPivotCache.キャッシュにはリフレッシュ方法およびそョンにします。そしてリフレッシュすべてのPivotCachesの代わりにPivotTables.

本当は違いがあると思います。新規作成する場合のピボットテーブルと言われたらい前ます。というと、このピボットテーブルが独自のキャッシュの倍のサイズのデータです。だいりんごワークブックは小さめですが、追加のコレクションへのピボットテーブルを共有する単一ます。コレクションの全種類を取得しaltova diffdogは、スクリーンショットにxmlspyリフレッシュルピボットテーブルを収集します。想像できるための差が爽やかな毎にキャッシュのワークブックで、爽やかな毎ピボットテーブルにワークブック.

がありリフレッシュすべてのオプションは、ピボットテーブルのツールバーがあります。ることは必要なものではありません。あさなければいけないのです。

Ctrl+alt+F5

お持ちの PivotTables コレクションのVB ワークシート オブジェクトです。なので、ループのようにこれは動作します:

Sub RefreshPivotTables()
    Dim pivotTable As PivotTable
    For Each pivotTable In ActiveSheet.PivotTables
        pivotTable.RefreshTable
    Next
End Sub

注からは溝:

  1. 覚えて各ず保護シートを更新する前に、PivotTable.
  2. 保存しばしば.
  3. ょう便局とファミリーマートがあり、更新によるコース---:)

幸運を祈っています。

このコード

Private Sub Worksheet_Activate()
    Dim PvtTbl As PivotTable
        Cells.EntireColumn.AutoFit
        For Each PvtTbl In Worksheets("Sales Details").PivotTables
        PvtTbl.RefreshTable
        Next
End Sub 

に働きます。

このコードを使用して起動シートモジュールは、このように表示され、フリッカ/マのシートを起動します。

またリフレッシュできる特定の接続 やまリフレッシュすべてのピボットリンクします。

このコードを制作しましたスライサーからのテーブルに存在Excel:

Sub UpdateConnection()
        Dim ServerName As String
        Dim ServerNameRaw As String
        Dim CubeName As String
        Dim CubeNameRaw As String
        Dim ConnectionString As String

        ServerNameRaw = ActiveWorkbook.SlicerCaches("Slicer_ServerName").VisibleSlicerItemsList(1)
        ServerName = Replace(Split(ServerNameRaw, "[")(3), "]", "")

        CubeNameRaw = ActiveWorkbook.SlicerCaches("Slicer_CubeName").VisibleSlicerItemsList(1)
        CubeName = Replace(Split(CubeNameRaw, "[")(3), "]", "")

        If CubeName = "All" Or ServerName = "All" Then
            MsgBox "Please Select One Cube and Server Name", vbOKOnly, "Slicer Info"
        Else
            ConnectionString = GetConnectionString(ServerName, CubeName)
            UpdateAllQueryTableConnections ConnectionString, CubeName
        End If
    End Sub

    Function GetConnectionString(ServerName As String, CubeName As String)
        Dim result As String
        result = "OLEDB;Provider=MSOLAP.5;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=" & CubeName & ";Data Source=" & ServerName & ";MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2"
        '"OLEDB;Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=" & CubeName & ";Data Source=" & ServerName & ";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False"
        GetConnectionString = result
    End Function

    Function GetConnectionString(ServerName As String, CubeName As String)
    Dim result As String
    result = "OLEDB;Provider=MSOLAP.5;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=" & CubeName & ";Data Source=" & ServerName & ";MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2"
    GetConnectionString = result
End Function

Sub UpdateAllQueryTableConnections(ConnectionString As String, CubeName As String)
    Dim cn As WorkbookConnection
    Dim oledbCn As OLEDBConnection
    Dim Count As Integer, i As Integer
    Dim DBName As String
    DBName = "Initial Catalog=" + CubeName

    Count = 0
    For Each cn In ThisWorkbook.Connections
        If cn.Name = "ThisWorkbookDataModel" Then
            Exit For
        End If

        oTmp = Split(cn.OLEDBConnection.Connection, ";")
        For i = 0 To UBound(oTmp) - 1
            If InStr(1, oTmp(i), DBName, vbTextCompare) = 1 Then
                Set oledbCn = cn.OLEDBConnection
                oledbCn.SavePassword = True
                oledbCn.Connection = ConnectionString
                oledbCn.Refresh
                Count = Count + 1
            End If
        Next
    Next

    If Count = 0 Then
         MsgBox "Nothing to update", vbOKOnly, "Update Connection"
    ElseIf Count > 0 Then
        MsgBox "Update & Refresh Connection Successfully", vbOKOnly, "Update Connection"
    End If
End Sub

私はコマンドを使ってください以下に、最近の過去という。

ActiveWorkbook.RefreshAll

い役立っています。

ご利用の場合はMS Excel2003し、その他のビュー>ツールバー>ピボットテーブルからこのツールバーをリフレッシュをクリック!このシンボルです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top