パワークエリでデータ更新を自動化・定期更新化する方法を紹介します。
クエリの定期実行には下記のような方法がありますが ここではVBAマクロとタスクスケジューラを組み合わせた方法を解説します。
- タスクスケジューラ + VBAマクロ(VB Script)+ コマンドプロンプトでクエリ更新
- Power Automate Desktop + VBAマクロでクエリ更新
- タスクスケジューラ + PowerShellでクエリ更新

この記事は次のような人におすすめです!
・クエリ更新作業を自動化したい人
・クエリをいつも決まった時間に更新したい人
VBAマクロの作成
まずはデータ更新(クエリ更新)を実行するVBAマクロを作成します。
Excelファイル内のすべてのクエリを更新する場合 と クエリ名を指定してひとつのクエリを更新する場合 の主に2つの方法がありますので用途に合わせて使い分けてください。
すべてのクエリを更新
Sub test()
ActiveWorkbook.RefreshAll
End Sub
クエリ名を指定して更新
Sub test()
ActiveWorkbook.Connections("クエリ - クエリ名").Refresh
End Sub



マクロの名前となる test の部分は自由に変更してOKです!
クエリ名 の部分についてもご自身のクエリ名に変更してください。
VBAマクロの作成手順を含めた詳しい解説はこちらの記事で紹介してますので参考にしてみてください。


手順説明の例として、ここでは下図のように「QueryA」を実行するマクロ「QueryUpdate」を作成します。


マクロ作成が完了したら 拡張子をxlsmにしてファイルを保存してください。今回は下図のようにC:\test\test.xlsm
に保存します。


Sponsored link
バッチファイル(.bat)の作成
次に作成したVBAマクロを実行するバッチファイルを作成します。
VBSスクリプトの作成
まずはVBSスクリプトのファイルを作成します。
VB Script(VBS)ファイルとはWindowsで動作するプログラミング言語です。これを用いることでタスクスケジューラからExcelのVBAマクロを実行することができます。
テキストエディタ(メモ帳など)を開いて下記のスクリプトを入力して保存してください(拡張子はvbs)



Excelファイルのパスや実行するマクロ名は変更してください
Dim xlApp
Dim xlBook
Const FILE_PATH = "ファイルパス" 'ファイルパスは自由に変更してください
Const MACRO_NAME = "マクロ名" 'マクロ名は自由に変更してください
' Excelアプリケーションを起動
Set xlApp = CreateObject("Excel.Application")
' 非表示で実行(必要に応じてTrueに変更)
xlApp.Visible = False
' マクロを含むExcelファイルを開く
Set xlBook = xlApp.Workbooks.Open(FILE_PATH)
' マクロを実行
xlApp.Run xlBook.Name & "!" & MACRO_NAME
'アラートを消す
xlApp.DisplayAlerts = False
' 保存して閉じる(必要に応じて変更)
xlBook.Save
xlBook.Close
' Excelアプリケーションを終了
xlApp.Quit
手順説明の例として、ここでは下図のように「RunMacro.vbs」という名前で保存しています。
上記のスクリプト内でファイル名はC:\test\test.xlsm
、マクロ名はQueryUpdate
としています。


バッチファイルの作成
コマンドプロンプトでVBSスクリプトを実行するためのバッチファイルを作成します(拡張子はbat)。
以下のような内容を記述します。"VBSファイルパス"
の部分は自由に変えてください。
@echo off
cscript //nologo "VBSファイルパス"
ここでは、下図のようにRunMacro.bat
という名前にします。作成したバッチファイルはダブルクリックするか、コマンドプロンプトから実行できます。


Sponsored link
タスクスケジューラで定期実行の設定
最後に、タスクスケジューラを使用して作成したバッチファイルを定期実行する設定をします。
タスクスケジューラ設定手順
Windowsの検索窓で「タスクスケジューラ」を入力して、表示される「タスクスケジューラ」を起動します。


「タスクスケジューラライブラリ」を選択して操作にある「タスクの作成」をクリックする。


新規タスクにおいてタスク名とセキュリティオプションを設定します。
セキュリティオプションにおいては下記にチェックを入れてください。
- ユーザがログオンしているときのみ実行する
- 最上位の特権で実行する


次にフロー実行の日時を設定します。
トリガータブの「新規」をクリックする。


設定で実行したい日時を設定してください。
必ず「有効」にチェックが入ってることを確認してください。設定が完了したら「OK」をクリックします。
下図では2025年4月1日から毎日9時に更新が実行されるように設定しています。


次に実行するファイルの選択と設定をします。
操作タブの「新規」をクリックする。


次に下記の設定項目を設定します。
プログラム/スクリプト:バッチファイルのファイルバス
今回の環境での具体的にC:\test\RunMacro.bat
となります。


これでタスクスケジューラの設定は完了です。OKをクリックして設定画面を閉じてください。
以上で、PowerQueryの定期自動更新設定が完了です。
実行結果の確認
作成したタスクが正しく動作するか手動で確認します。
対象のタスクを選択して「実行する」をクリックしてください。


下記のように「前回の実行結果」が「この操作を正しく終了しました。(0x0)」となっていればOKです。


あとは、次の実行時間まで待って問題なく更新できているか確認してみてください。
タスクスケジューラが実行されない場合(0x1)
タスクスケジューラの実行結果が(0x1)となっている場合 や バッチファイルが実行されない場合は下記を試してみてください。
- powershellファイルの格納場所の変更(ファイルパスの確認)
- ファイルパスを
””
で囲む
Sponsored link
パワークエリの学習本についてはコチラの記事でまとめてますので参考にしてみてください。
・初心者向けおすすめ学習本
・初中級者向けおすすめ学習本
コメント