Power Query(パワークエリ)とVBAの使い分け|5つの判断基準で迷わず選択

Power Query vs VBA 比較ガイド

結論: Power QueryとVBAの使い分けは「データ整形か、操作か」で決まる

データの取り込み・整形・結合が目的ならPower Query(パワークエリ)、Excelの操作そのものを自動化したいならVBAを選びます。Power Query VBAの使い分けで迷ったら、この1点だけで大半のケースは判断できます。

実務での組み立て方も同じ順序です。まずPower Queryで整形を作り、出力・配布・画面作成が必要になった時点でVBAを足します。

より正確な判断基準は次の表のとおりです。

やりたいこと選ぶべき手段
CSV・複数ブックの取り込み、結合、集計、表の整形Power Query
セルへの書き込み、シート操作、印刷、メール送信、ファイル保存VBA
整形はPower Query、その後の出力処理はVBA併用(後述)

本記事はWindows 11+Microsoft 365版Excelで検証しています。Excel 2016/2019/2021でも基本的な考え方は同じです。バージョン差は後半の対応表で区別して解説します。

 

 

Power QueryとVBAの違いを比較表で確認する

両者は「自動化ツール」という点は同じでも、得意分野と運用コストが根本的に異なります。

比較項目Power QueryVBA
主な用途データの取得・整形・結合Excel操作全般の自動化
作り方マウス操作の記録が中心(高度な処理はM言語で編集可)コードを記述
学習コスト低い(基本操作は数時間〜1日程度)高い(文法の習得が必要)
できることの範囲データ処理に限定(セルの書式は扱えない)ほぼ無制限(他アプリ連携も可)
再実行の方法「すべて更新」を1クリックマクロを実行
元データ変更への強さ強い(手順が自動で再適用される)コードの修正が必要な場合がある
保存形式通常の.xlsxのまま使える.xlsm(マクロ有効ブック)が必須
セキュリティ警告外部接続時のみ確認あり開くたびにマクロの警告・ブロックの対象
処理速度(大量データ)数十万行でも実用的なケースが多いセル単位の処理は遅いが、配列処理なら高速な場合もある
引き継ぎやすさ手順が「適用したステップ」として可視化される保守担当者がいないと修正が難しくなる

特に見落とされがちな差が保存形式とセキュリティ警告です。VBAは.xlsm形式が必須で、社外とのやり取りやセキュリティポリシーの厳しい環境ではブロックされることがあります。Power Queryのクエリは通常の.xlsxに保存でき、マクロのブロック対象になりません。

 

 

使い分けの判断基準: 5つの質問に答えるだけで決まる

自分のタスクを次の5つの質問に順番に当てはめます。最初に「はい」になった時点で結論が出ます。

  1. 質問1: やりたいことは「データを取り込んで表の形を整える」ことか?
    →はいならPower Query。CSV結合、列の分割、不要行の削除、複数シートの統合、マージ(VLOOKUP相当)はすべてここに含まれます。
  2. 質問2: セルの書式設定、シートの追加・削除、印刷、PDF出力、メール送信など「データ整形以外の操作」を自動化したいか?
    →はいならVBA。Power Queryにはこれらの機能がありません。
  3. 質問3: 整形した結果を、別ブックへの転記や帳票出力までまとめて自動化したいか?
    →はいなら併用。整形をPower Query、出力をVBAに分担させます。
  4. 質問4: ボタン1つで複数の処理を順番に実行したいか?
    →はいならVBA(またはVBAからPower Queryを更新する併用)。
  5. 質問5: Excelの外(ブラウザーや他のアプリの画面操作)まで自動化したいか?
    →VBAでも一部可能ですが、Power AutomateやOffice Scriptsの検討対象です(後述)。

実務の相談の8割は質問1で決着します。「データを整える作業」を毎回手作業でやり直しているなら、まずPower Queryを試すのが最短です。

 

実務タスク別の使い分け早見表

具体的なタスク名で引ける早見表です。自分の作業に最も近い行を探してください。

実務タスク推奨補足
複数のCSVを1つの表に結合するPower Queryフォルダー指定でファイル追加にも自動対応
基幹システムの出力データを毎月整形するPower Query翌月は「すべて更新」1クリックで完了
2つの表をキーで突合する(VLOOKUP相当)Power Query「クエリのマージ」で実現
縦持ち・横持ちの変換(ピボット解除)Power QueryVBAで書くと複雑になる典型例
Webページの表を定期取得するPower Query「Webから」で取得、更新も自動
セルの色や罫線など書式を自動設定するVBAPower Queryは書式を扱えない
セルの色を基準に行を抽出・処理するVBAPower Queryはセルの値しか読み取れない
シートを部署別に分割して別ブック保存するVBAファイル操作はVBAの領域
ボタンを押したら帳票をPDF出力するVBAExportAsFixedFormatを使用
Outlookでメールを一括送信するVBAOutlookの操作はPower Queryでは不可
入力フォーム(ユーザーフォーム)を作るVBAUI作成はVBA専用機能
整形→転記→印刷を一気通貫で自動化する併用整形はPQ、後工程はVBA
毎朝データを更新して関係者に配布する併用VBAで更新→保存→送信を制御


Power Queryを選ぶべきケースと理由

次の条件に1つでも当てはまるなら、VBAより先にPower Queryを検討します。

  • 元データが毎回同じ形式で届き、整形手順も毎回同じ
  • データ量が数万行を超え、関数では動作が重い
  • 作った仕組みを、コードを書けない同僚にも引き継ぎたい
  • マクロが禁止・制限されている環境で使う

Power Queryの最大の強みは、操作手順が「適用したステップ」として自動記録され、更新1クリックで再実行できることです。手順は画面上で1行ずつ確認・修正でき、属人化しにくい構造になっています。

基本操作はノーコードですが、内部ではM言語というコードが生成されています。高度な処理では「詳細エディター」からM言語を直接編集することもできます。ノーコードで始めてコードで拡張できる点も、段階的に学べる利点です。

手軽さの例として、フォルダー内のCSVを1つに結合する手順は次の5ステップです。

  1. 「データ」タブの「データの取得」をクリックします。
  2. 「ファイルから」→「フォルダーから」を選択します。
  3. CSVを格納したフォルダーを指定し、「開く」をクリックします。ファイル一覧が表示されます。
  4. 「結合」→「データの結合と変換」をクリックします。プレビューが表示されます。
  5. 「OK」をクリックすると、全ファイルが1つの表として読み込まれます。

以後はフォルダーにCSVを追加して「すべて更新」を押すだけで、結合結果に自動反映されます。

Power QueryはExcel 2016以降のWindows版に標準搭載されています。「データ」タブの「データの取得と変換」グループから追加インストールなしで使えます。


VBAを選ぶべきケースと理由

次の条件に当てはまるなら、Power Queryでは実現できないためVBAを選びます。

  • セルへの書き込み・書式設定・シート操作・印刷を自動化したい
  • ファイルの保存・移動・リネームなど、ブックの外の操作が必要
  • ユーザーフォームで入力画面を作りたい
  • OutlookやWordなど他のOfficeアプリと連携したい
  • 条件分岐や繰り返しを含む複雑な業務ロジックを組みたい

VBAはExcelを含むOffice全体を操作できる汎用言語です。たとえばアクティブシートをPDF出力する処理は次の1行で書けます。

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=”C:\出力\報告書.pdf”

自由度は圧倒的ですが、.xlsm形式が必須になり、コードの保守は書ける人に依存する点を運用コストとして織り込む必要があります。

なお「マクロの記録」で生成されるコードはデータ整形には不向きです。整形目的で記録マクロを量産しているなら、Power Queryへの置き換えを推奨します。

 

併用が最適解: VBAからPower Queryを更新する方法

実務で完成度の高い自動化は、二者択一ではなく併用で作ります。整形をPower Queryに任せ、VBAは「更新→後処理」の指揮だけを担当する構成です。コード量が激減し、保守も楽になります。

VBAからブック内の全クエリを更新する最小コードは次のとおりです。

  1. 「Alt」+「F11」キーでVBE(Visual Basic Editor)を開きます。
  2. 「挿入」メニューから「標準モジュール」をクリックします。コードウィンドウが表示されます。
  3. 次のコードを貼り付けます。

ThisWorkbook.RefreshAll

注意点が1つあります。クエリが「バックグラウンドで更新する」設定(既定でオン)のままだと、RefreshAllは更新完了を待たずに次の行へ進みます。直後に転記処理を書くと、更新前の古いデータを転記する不具合の原因になります。

確実な対策は、対象クエリの接続プロパティで「バックグラウンドで更新する」をオフにすることです。RefreshAllの後にApplication.CalculateUntilAsyncQueriesDoneを実行して非同期クエリの完了を待つ書き方もありますが、接続の種類によっては待機しない場合があるため、基本はバックグラウンド更新オフを推奨します。

この構成で「元データ取得→整形→シートへの読み込み」までPower Queryが実行します。その後にVBAで転記・保存・印刷を続ければ、一気通貫の自動化が完成します。


Power QueryとVBAはどちらを先に学ぶべきか

これから学ぶならPower Queryが先です。理由は3つあります。

  • 学習コストが低く、基本操作は数時間〜1日程度で実務投入できる
  • 初心者が自動化したい作業の大半(整形・結合・集計)をカバーする
  • マクロ禁止の職場でも使えるため、学んだことが無駄になりにくい

VBAは、Power Queryで足りない操作(書式・印刷・ファイル操作)が実際に必要になった時点で、その範囲だけ学ぶのが効率的です。先にVBAから始めると、Power Queryなら数クリックで済む整形処理を、大量のコードで書いてしまう遠回りが起きがちです。

 

バージョン・環境別の対応表

使い分けの前提として、そもそも自分の環境で使えるかを確認します。

環境Power QueryVBA
Microsoft 365(Windows)標準搭載・全機能利用可
Excel 2021/2019/2016(Windows)標準搭載(一部機能はM365限定)利用可
Excel 2013/2010(Windows)無料アドインの追加が必要(提供終了済みの旧アドイン)利用可
Microsoft 365(Mac)利用可(データソースはWindows版より限定)利用可(一部機能に制限)
Excel 2016/2019(Mac)非対応利用可(制限あり)
Excel for the web利用可(機能限定)非対応(代替はOffice Scripts)

永続ライセンス版(2016/2019/2021)のPower Queryは、Microsoft 365より使えるデータソースや機能が少なくなります。M365限定機能の例と代替策は次のとおりです。

M365限定機能の例永続版での代替策
PDFからのデータ取り込みPDFをCSV等に変換してから取り込む、またはM365へ移行
あいまい一致によるマージ表記ゆれを事前に統一してから通常のマージを行う

接続したいデータソースが対応しているかは、Microsoftの公式ページ「Excel バージョンの Power Query データ ソース」で確認できます。

 

導入前に知っておく注意点(運用でつまずくポイント)

選定後の運用で問い合わせが多いのは次の3点です。先回りして対策します。

VBA: ネットから取得した.xlsmはマクロがブロックされる

メール添付やダウンロードで入手した.xlsmは、既定でマクロがブロックされ、赤い警告バーが表示されます。ファイルを右クリック→「プロパティ」→「許可する」にチェックを入れて解除するか、社内の「信頼できる場所」に保存して運用します。解除は配布元が信頼できる場合に限定してください。

Power Query: 外部データ接続の有効化が必要な場合がある

外部データに接続するブックを開くと「セキュリティの警告 外部データ接続が無効になっています」と表示される場合があります。「コンテンツの有効化」をクリックすると更新できるようになります。

共通: 元データの場所・形式の変更に注意する

参照先フォルダーの移動やファイル名の変更があると、Power QueryもVBAもエラーになります。Power Queryは「データソース設定」でパスを修正できます。変更前のブックのコピーを残しておくと、問題発生時にすぐ差し戻せます。

 

どちらも不向きなケース: Power AutomateとOffice Scriptsの出番

次の要件はPower QueryにもVBAにも向きません。別のツールを検討します。

  • PCを起動していない時間帯にも定時実行したい → Power Automate(クラウドフロー)+Office Scripts
  • SharePoint上のブックをブラウザーだけで自動処理したい → Office Scripts
  • Teams通知や承認フローなどExcel外のクラウドサービスと連携したい → Power Automate
  • Windows PC上のアプリやブラウザーの画面操作をGUIで自動化したい → Power Automate Desktop(Windows 11に標準搭載)

VBAはローカルPC上のExcelが起動している間しか動作しません。クラウド前提の自動化は、最初からPower Automate側で設計するほうが確実です。

 

 

Power QueryとVBAの使い分けに関するFAQ

Q. Power QueryはVBAを置き換えますか?

置き換えません。守備範囲が異なる別のツールです。Power Queryはデータ整形専用で、セルの書式設定やファイル操作はできません。逆にVBAでデータ整形を書くと、Power Queryなら数クリックの処理に大量のコードが必要になります。

Q. Power QueryとOffice Scriptsの違いは何ですか?

Power Queryはデータの取得・整形に特化した機能、Office ScriptsはVBAに近い「操作の自動化」をWeb版Excelで実現する仕組みです。Office ScriptsはTypeScriptで記述し、Power Automateから定時実行できます。デスクトップ中心ならPower Query+VBA、ブラウザー・クラウド中心ならOffice Scriptsが軸になります。

Q. 既存のVBAマクロをPower Queryに移行すべきですか?

正常に動いているマクロを急いで移行する必要はありません。次の3項目のうち2つ以上に当てはまる場合は、データ整形部分だけPower Queryに切り出す部分移行を検討します。

  • 元データの形式変更のたびにコード修正が発生している
  • コードを保守できる人が1人しかいない、または不在になる予定がある
  • マクロのブロックやセキュリティ警告が運用の障害になっている

Q. Power QueryとVBAは同じブックで併用できますか?

併用できます。本文で解説したとおり、VBAのRefreshAllからPower Queryの更新を実行する構成が実務では一般的です。ただしVBAを含めるため、保存形式は.xlsmになります。

 

まとめ: 迷ったら「データ整形はPower Query、操作はVBA」

Power QueryとVBAの使い分けは次の3行に集約されます。

  • データの取り込み・整形・結合はPower Query
  • 書式・印刷・ファイル操作・他アプリ連携はVBA
  • 両方必要なら、VBAのRefreshAllでPower Queryを呼び出す併用構成

組み立ての順序は「まずPower Queryで整形を完成させ、運用要件が出た分だけVBAで補う」が基本です。自分のタスクを本文の5つの質問に当てはめ、早見表で答え合わせをしてから着手してください。

編集長
古見遊 正

流通業で働きながら、2004年からWindowsを使い続けている80年代生まれのサラリーマン。ExcelとPowerPointを極め、仕事の効率化を追求中。苦手だったWordも克服中!Excelを使いこなせるだけで周囲から『神扱い』されるけれど、そのせいで『システムに詳しい人』だと勘違いされがち。でも、それが新しい知識を得るきっかけになった。そんな経験を活かして、Excel・PowerPoint・Word・Windowsの時短ワザ&仕事術を発信中!

古見遊 正をフォローする
グラフ・データ分析マクロ・VBA

コメント

タイトルとURLをコピーしました