20 の異なるピボット テーブルを含むワークブックがあります。すべてのピボット テーブルを見つけて VBA で更新する簡単な方法はありますか?
10 に答える
はい。
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
この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]ボタンをクリックします
これにより、ブックが開かれるたびにピボットテーブルが更新されます。
ActiveWorkbook.RefreshAll
ピボット テーブルだけでなく、ODBC クエリもすべて更新します。データ接続を参照する VBA クエリがいくつかありますが、このオプションを使用すると、コマンドが VBA から提供される詳細なしでデータ接続を実行するとクラッシュします。
ピボットのみを更新する場合は、このオプションをお勧めします
Sub RefreshPivotTables()
Dim pivotTable As PivotTable
For Each pivotTable In ActiveSheet.PivotTables
pivotTable.RefreshTable
Next
End Sub
特定の状況では、ピボットテーブルとそのピボットキャッシュを区別したい場合があります。キャッシュには、独自の更新方法と独自のコレクションがあります。そのため、ピボットテーブルではなく、すべてのピボットキャッシュを更新できました。
違い?新しいピボット テーブルを作成すると、以前のテーブルに基づいて作成するかどうかを尋ねられます。いいえと言うと、このピボット テーブルは独自のキャッシュを取得し、ソース データのサイズを 2 倍にします。はいと答えた場合は、ワークブックを小さく保ちますが、単一のキャッシュを共有するピボット テーブルのコレクションに追加します。コレクション内のいずれかのピボット テーブルを更新すると、コレクション全体が更新されます。したがって、WorkBook 内のすべてのピボット テーブルを更新する場合と比較して、WorkBook 内のすべてのキャッシュを更新する場合の違いを想像することができます。
ピボット テーブル ツールバーには、すべて更新オプションがあります。それは十分です。他に何もしなくていい。
ctrl+alt+F5 を押します
VB WorksheetオブジェクトにPivotTablesコレクションがあります。したがって、次のような簡単なループが機能します。
Sub RefreshPivotTables()
Dim pivotTable As PivotTable
For Each pivotTable In ActiveSheet.PivotTables
pivotTable.RefreshTable
Next
End Sub
塹壕からのメモ:
- ピボットテーブルを更新する前に、保護されているシートの保護を必ず解除してください。
- 頻繁に保存します。
- もっと考えて、そのうち更新します... :)
幸運を!
コード
Private Sub Worksheet_Activate()
Dim PvtTbl As PivotTable
Cells.EntireColumn.AutoFit
For Each PvtTbl In Worksheets("Sales Details").PivotTables
PvtTbl.RefreshTable
Next
End Sub
正常に動作します。
コードはシートのアクティブ化モジュールで使用されるため、シートがアクティブ化されるとちらつき/グリッチが表示されます。
I have use the command listed below in the recent past and it seems to work fine.
ActiveWorkbook.RefreshAll
Hope that helps.
MS Excel 2003 を使用している場合は、[表示] -> [ツールバー] -> [ピボット テーブル] に移動します。このツールバーから、! をクリックして更新できます。このシンボル。