VBAで、PowerQueryの更新を待ってピボットテーブルを更新するときの備忘録。PowerQueryの更新を待たずにピボットテーブルが更新されてしまい、データ更新前の状態でピボットテーブルが表示されてしまった。
元は、
ActiveWorkbook.RefreshAll
Sheets("集計").PivotTables("ピボットテーブル1").PivotCache.Refresh
で、一旦すべてのデータ(外部データは、ピボットテーブル)を更新した後、念のためピボットテーブルを再更新というもの。
更新されないまま、次の処理に進んでしまうので、調べてみたら、
RefreshAllの仕様として、
BackgroundQuery プロパティが True に設定されているオブジェクトは、バックグラウンドで更新されます。
ということ。
元のクエリのプロパティで、バックグラウンドで更新するのチェックを外すことで、期待する処理ができました。
なお、個別にPowerQueryを更新する場合は、
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
というように、Falseの設定ができます。
以上、VBAで、PowerQueryの更新を待たずにピボットテーブルが更新されてしまう時の確認ポイントでした。