Power Queryでデータの取り込みフローを組んだあと、「結局、毎朝手動で更新ボタンを押している」という状態になっていませんか。せっかく集計を自動化したのに、更新だけ手作業では半分しか自動化できていません。
この記事では、Power Queryのクエリ更新を自動化する方法を用途別に整理して比較します。ファイルを開いた時の自動更新といった手軽な方法から、「毎朝9時に前日データを自動で取り込む」といった定期実行まで、手軽さ・PCの起動要否・スケジュール精度の3軸で使い分けられるようにします。
Power Query自体の基礎から学びたい方は、先にPower Query完全ガイド|データ取得から整形までの基本に目を通しておくと、この記事の内容がよりスムーズに理解できます。
Power Queryの更新を自動化する方法は大きく2系統
クエリ更新の自動化は、実現したいタイミングによって2つの系統に分かれます。まずこの全体像を押さえると、自分に必要な方法を選びやすくなります。
1つ目は「Excelファイルを操作するタイミングで更新する」系統です。ファイルを開いた時に自動更新する設定や、一定間隔で更新する設定がこれにあたります。Excelの標準機能だけで完結するため、最も手軽です。
2つ目は「Excelを開いていなくても、決まった時刻に更新する」系統です。VBAマクロ+タスクスケジューラ、Power Automate Desktop、PowerShell、Office Scriptsなどを使い、外部からExcelを起動して更新・保存まで自動で行います。「毎朝9時に前日データを取り込んでおく」といった用途はこちらになります。
| 系統 | 代表的な方法 | 向いている用途 |
|---|---|---|
| ファイル操作時に更新 | 開いた時に更新 / 定期間隔で更新 | 自分が使うときに最新なら十分 |
| 時刻指定で更新 | タスクスケジューラ / Power Automate / Office Scripts | 出社前に最新化しておきたい |
方法1:ファイルを開いた時に自動更新する(最も手軽)
まず試してほしいのが、Excelの標準設定だけで実現できる「開いた時の自動更新」です。コードも外部ツールも不要で、設定は1分で終わります。
設定手順は次の通りです。
- 「データ」タブ → 「クエリと接続」を開く
- 対象クエリを右クリック → 「プロパティ」を選択
- 「使用」タブ内の「ファイルを開くときにデータを更新する」にチェックを入れる
これで、そのExcelファイルを開くたびにクエリが自動で再実行され、常に最新データで作業を始められます。手動で更新ボタンを押し忘れる事故がなくなるため、まずはこの設定だけでも入れておく価値があります。
同じプロパティ画面には「定期的に更新する(◯分ごと)」という設定もあります。ファイルを開いている間、指定した間隔で更新が走る仕組みで、リアルタイム性が必要なダッシュボードに向いています。
注意点として、この方法はあくまで「Excelを開いている」ことが前提です。ファイルが閉じている間は更新されないため、「出社前に最新化しておく」といった用途には次の方法2が必要になります。
方法2:VBAマクロ+タスクスケジューラで毎朝9時に自動更新
「毎朝9時に前日データを自動で取り込んでおく」を実現する、最も定番の組み合わせがVBAマクロとWindowsのタスクスケジューラです。Windows標準機能だけで完結し、追加ライセンスも不要なため、社内PCで完結させたい場合に向いています。
ステップ1:更新と保存を行うマクロを書く
まずExcel側に、全クエリを更新して上書き保存し、自動で閉じるマクロを用意します。Auto_Openという名前にしておくと、ファイルを開いたタイミングで自動実行されます。
Sub Auto_Open()
' バックグラウンド更新をオフにして、完了を待ってから保存する
Dim cn As WorkbookConnection
For Each cn In ThisWorkbook.Connections
cn.OLEDBConnection.BackgroundQuery = False
Next cn
ThisWorkbook.RefreshAll ' 全クエリを更新
ThisWorkbook.Save ' 上書き保存
Application.Quit ' Excelを終了
End Sub
BackgroundQuery = False がポイントです。これを設定しないと、更新が終わる前に保存・終了してしまい、古いデータのまま保存される事故が起きます。
VBAでの自動化全般のコツは、Excelマクロ側の記事も参考になります。エラー処理を加える場合は、更新失敗時にログを残す処理を入れておくと安心です。
ステップ2:タスクスケジューラで毎朝9時に起動を予約する
次に、Windowsのタスクスケジューラでこのファイルを毎朝9時に開くよう予約します。
- スタートメニューで「タスク スケジューラ」を起動
- 「基本タスクの作成」をクリック
- トリガーを「毎日」、時刻を「9:00」に設定
- 操作で「プログラムの開始」を選び、対象に対象のExcelファイルを指定
ファイルが開くとAuto_Openが走り、更新・保存・終了まで自動で完了します。これで出社時には前日データが取り込まれた状態になっています。
注意点は、PCが起動していてWindowsにログオンしている必要があることです。電源が切れていると当然タスクは走りません。対策として、タスクのプロパティで「タスクの実行に必要な場合はコンピューターのスリープを解除する」を有効にしておくと、スリープからの復帰で実行できます。
方法3:Power Automate Desktopで更新する(コードを書きたくない人向け)
VBAを書くのに抵抗がある場合は、Power Automate Desktop(PAD)が選択肢になります。Windows 10/11に標準で付属しており、画面操作を記録するような感覚でフローを組めるのが魅力です。
おおまかな流れは次の通りです。
- PADで新規フローを作成
- 「Excelの起動」アクションで対象ファイルを開く
- VBScriptまたはマクロ実行アクションで
RefreshAll相当の更新を実行 - 「Excelを閉じる」アクションで保存して終了
- PADのスケジュール機能、またはタスクスケジューラで毎朝9時に起動
PADの利点は、更新後に「結果をメールで通知する」「別フォルダにコピーする」といった後続処理を、ドラッグ操作で追加しやすいことです。一方で、更新処理そのものは結局Excelのマクロ機能に頼る場面が多く、完全にコードレスとはいかないケースもあります。
PADやVBA、Power Queryをどう使い分けるかは、Power QueryとVBA・関数・Power Automateの違いと使い分けで詳しく比較しているので、ツール選定で迷ったら参照してください。
方法4:PowerShellやOffice Scriptsで自動化する
より柔軟に制御したい場合や、クラウド環境で動かしたい場合の選択肢も押さえておきましょう。
PowerShell:複数ファイルをまとめて更新したいとき
PowerShellからExcelをCOM経由で操作すれば、フォルダ内の複数ファイルを順番に開いて更新・保存する処理を1つのスクリプトで書けます。
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$wb = $excel.Workbooks.Open("C:datareport.xlsx")
$wb.RefreshAll()
Start-Sleep -Seconds 30 # 更新完了を待つ
$wb.Save()
$wb.Close()
$excel.Quit()
タスクスケジューラと組み合わせれば、毎朝決まった時刻に複数ファイルを一括更新できます。月次レポートを複数部署分まとめて処理する、といった用途で効果を発揮します。
Office Scripts:PCを起動しなくてよいクラウド更新
Microsoft 365のOffice Scripts + Power Automate(クラウド版)を使えば、Excel for the webのブック更新をクラウド上でスケジュール実行できます。最大の利点は、ローカルPCを起動しておく必要がないことです。「毎朝9時」のトリガーをクラウド側のフローで設定すれば、PCの電源状態に左右されません。
ただし、外部データソースへの接続方法によってはクラウド更新に制約があるため、社内ファイルサーバーのデータを取り込んでいる場合などは、事前に動作確認をしておくことをおすすめします。クラウドのトリガー設定の考え方は、GASのトリガーで定期実行を自動化する方法とも共通点が多いので、あわせて読むと理解が深まります。
用途別おすすめの選び方
ここまでの方法を、手軽さ・PC起動の要否・スケジュール精度の3軸で比較します。自分の状況に当てはめて選んでください。
| 方法 | 手軽さ | PC起動 | 時刻指定 | こんな人に |
|---|---|---|---|---|
| 開いた時に更新 | ◎ 設定のみ | 開く時だけ | 不可 | 自分が使うときに最新なら十分 |
| VBA+タスクスケジューラ | △ コード要 | 必要 | ◎ 正確 | 社内PCで毎朝確実に更新したい |
| Power Automate Desktop | ○ GUI中心 | 必要 | ○ | コードを避けつつ後処理も付けたい |
| PowerShell | △ コード要 | 必要 | ◎ 正確 | 複数ファイルを一括更新したい |
| Office Scripts | ○ クラウド | 不要 | ◎ 正確 | PCを常時起動せず更新したい |
選び方の指針はシンプルです。
- まずは「開いた時に更新」を設定する。これだけで多くの手間が消えます
- 出社前に最新化したいなら、まずVBA+タスクスケジューラを試す。Windows標準で完結します
- コードを避けたいならPower Automate Desktop、複数ファイルならPowerShell
- PCを起動したくない、クラウドで完結したいならOffice Scripts
Power Queryの基本操作にまだ不安がある場合は、Power Queryの始め方|初心者向けの基本操作で取り込みの流れを確認してから自動化に進むと、つまずきにくくなります。
まとめ
Power Queryの更新自動化は、「Excelを開く操作に紐づける方法」と「時刻指定で外部から動かす方法」の2系統で考えると整理しやすくなります。
- 最初の一歩は「ファイルを開いた時に更新」の設定。コード不要で効果は大きい
- 毎朝9時など定時更新は、VBA+タスクスケジューラが定番で確実
- コードを避けたいならPower Automate Desktop、クラウドで完結したいならOffice Scripts
- 複数ファイルの一括更新はPowerShellが得意
更新の手作業をなくすだけで、データ集計の自動化が本当の意味で完成します。まずは手軽な「開いた時に更新」から設定し、必要に応じて時刻指定の自動更新へとステップアップしていきましょう。

