91

20 の異なるピボット テーブルを含むワークブックがあります。すべてのピボット テーブルを見つけて VBA で更新する簡単な方法はありますか?

4

10 に答える 10

185

はい。

ThisWorkbook.RefreshAll

または、Excel のバージョンが古い場合は、

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
于 2008-09-16T10:18:52.013 に答える
29

この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

もう1つの非プログラムオプションは次のとおりです。

  • 各ピボットテーブルを右クリックします
  • テーブルオプションを選択します
  • [開いたときに更新]オプションにチェックマークを付けます。
  • [OK]ボタンをクリックします

これにより、ブックが開かれるたびにピボットテーブルが更新されます。

于 2008-09-16T10:37:07.133 に答える
20

ActiveWorkbook.RefreshAllピボット テーブルだけでなく、ODBC クエリもすべて更新します。データ接続を参照する VBA クエリがいくつかありますが、このオプションを使用すると、コマンドが VBA から提供される詳細なしでデータ接続を実行するとクラッシュします。

ピボットのみを更新する場合は、このオプションをお勧めします

Sub RefreshPivotTables()     
  Dim pivotTable As PivotTable     
  For Each pivotTable In ActiveSheet.PivotTables         
    pivotTable.RefreshTable     
  Next 
End Sub 
于 2012-09-25T22:32:39.583 に答える
8

特定の状況では、ピボットテーブルとそのピボットキャッシュを区別したい場合があります。キャッシュには、独自の更新方法と独自のコレクションがあります。そのため、ピボットテーブルではなく、すべてのピボットキャッシュを更新できました。

違い?新しいピボット テーブルを作成すると、以前のテーブルに基づいて作成するかどうかを尋ねられます。いいえと言うと、このピボット テーブルは独自のキャッシュを取得し、ソース データのサイズを 2 倍にします。はいと答えた場合は、ワークブックを小さく保ちますが、単一のキャッシュを共有するピボット テーブルのコレクションに追加します。コレクション内のいずれかのピボット テーブルを更新すると、コレクション全体が更新されます。したがって、WorkBook 内のすべてのピボット テーブルを更新する場合と比較して、WorkBook 内のすべてのキャッシュを更新する場合の違いを想像することができます。

于 2011-12-08T13:53:48.367 に答える
5

ピボット テーブル ツールバーには、すべて更新オプションがあります。それは十分です。他に何もしなくていい。

ctrl+alt+F5 を押します

于 2008-12-11T12:49:46.887 に答える
1

VB WorksheetオブジェクトにPivotTablesコレクションがあります。したがって、次のような簡単なループが機能します。

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

塹壕からのメモ:

  1. ピボットテーブルを更新する前に、保護されているシートの保護を必ず解除してください。
  2. 頻繁に保​​存します
  3. もっと考えて、そのうち更新します... :)

幸運を!

于 2008-09-16T10:22:35.687 に答える
0

コード

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

正常に動作します。

コードはシートのアクティブ化モジュールで使用されるため、シートがアクティブ化されるとちらつき/グリッチが表示されます。

于 2015-04-06T15:24:00.637 に答える
-2

I have use the command listed below in the recent past and it seems to work fine.

ActiveWorkbook.RefreshAll

Hope that helps.

于 2012-09-18T14:13:03.497 に答える
-3

MS Excel 2003 を使用している場合は、[表示] -> [ツールバー] -> [ピボット テーブル] に移動します。このツールバーから、! をクリックして更新できます。このシンボル。

于 2012-05-03T15:35:17.090 に答える