shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel】VBAで、PowerQueryの更新を待ってピボットテーブルを更新

VBAで、PowerQueryの更新を待ってピボットテーブルを更新するときの備忘録。PowerQueryの更新を待たずにピボットテーブルが更新されてしまい、データ更新前の状態でピボットテーブルが表示されてしまった。

 

元は、

ActiveWorkbook.RefreshAll

Sheets("集計").PivotTables("ピボットテーブル1").PivotCache.Refresh

で、一旦すべてのデータ(外部データは、ピボットテーブル)を更新した後、念のためピボットテーブルを再更新というもの。

 

更新されないまま、次の処理に進んでしまうので、調べてみたら、

RefreshAllの仕様として、

BackgroundQuery プロパティが True に設定されているオブジェクトは、バックグラウンドで更新されます。

出典: Workbook.RefreshAll メソッド (Excel) | Microsoft Learn

ということ。

 

元のクエリのプロパティで、バックグラウンドで更新するのチェックを外すことで、期待する処理ができました。



なお、個別にPowerQueryを更新する場合は、

Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False

というように、Falseの設定ができます。

 

以上、VBAで、PowerQueryの更新を待たずにピボットテーブルが更新されてしまう時の確認ポイントでした。