PowerQuery 更新の自動化・定期実行【コマンドプロンプト編】

パワークエリでデータ更新を自動化・定期更新化する方法を紹介します。

クエリの定期実行には下記のような方法がありますが ここでは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

タスクスケジューラで定期実行の設定

最後に、タスクスケジューラを使用して作成したバッチファイルを定期実行する設定をします。

タスクスケジューラ設定手順

STEP
タスクスケジューラの起動

Windowsの検索窓で「タスクスケジューラ」を入力して、表示される「タスクスケジューラ」を起動します。

STEP
新しいタスクを作成

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

新規タスクにおいてタスク名とセキュリティオプションを設定します。

セキュリティオプションにおいては下記にチェックを入れてください。

  • ユーザがログオンしているときのみ実行する
  • 最上位の特権で実行する
STEP
トリガーの設定

次にフロー実行の日時を設定します。

トリガータブの「新規」をクリックする。

設定で実行したい日時を設定してください。

必ず「有効」にチェックが入ってることを確認してください。設定が完了したら「OK」をクリックします。

下図では2025年4月1日から毎日9時に更新が実行されるように設定しています。

[タスクの開始]の選択で実行タイミングをログオン時スタートアップ時などにも設定できます。

STEP
実行ファイル設定

次に実行するファイルの選択と設定をします。

操作タブの「新規」をクリックする。

次に下記の設定項目を設定します。

設定項目

プログラム/スクリプト:バッチファイルのファイルバス

今回の環境での具体的にC:\test\RunMacro.batとなります。

これでタスクスケジューラの設定は完了です。OKをクリックして設定画面を閉じてください。

閉じるときにユーザログイン用のパスワード入力が求められますので、入力してOKしてください

以上で、PowerQueryの定期自動更新設定が完了です。

実行結果の確認

作成したタスクが正しく動作するか手動で確認します。

対象のタスクを選択して「実行する」をクリックしてください。

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

あとは、次の実行時間まで待って問題なく更新できているか確認してみてください。

タスクスケジューラが実行されない場合(0x1)

タスクスケジューラの実行結果が(0x1)となっている場合 や バッチファイルが実行されない場合は下記を試してみてください。

対処方法
  • powershellファイルの格納場所の変更(ファイルパスの確認)
  • ファイルパスを””で囲む

Sponsored link

Power Queryのおすすめ書籍

パワークエリの学習本についてはコチラの記事でまとめてますので参考にしてみてください。

初心者向けおすすめ学習本

初中級者向けおすすめ学習本

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次