Excel業務を自動化するなら何を使う?Power Query・VBA・Power Automate・GASの使い分け
Excel業務を自動化しようとすると、いろいろなツールが候補に挙がります。
Power Query
VBA
Power Automate
Power Automate Desktop
Google Apps Script(GAS)
調べれば調べるほど、選択肢が増えて迷ってしまいます。
「Power QueryとVBAは何が違うのか」
「Power AutomateがあればVBAは不要なのか」
「Googleスプレッドシートを使うならGASの方がよいのか」
私も業務改善に取り組む中で、複数のツールを使ってきました。
その中で感じたのは、どれか一つが最強なのではなく、作業の種類によって得意なツールが違うということです。
この記事では、それぞれの特徴と、実際の業務でどのように使い分けているかを整理します。
まずは結論
大まかに分けると、私は次のように考えています。
やりたいこと / 向いているツール
複数のExcelやCSVをまとめる:Power Query
データの形を整える:Power Query
Excel上の細かな操作を自動化する:VBA
ボタンを押して一連の処理を実行する:VBA
メールやファイル保存をきっかけに処理する:Power Automate
Webシステムやデスクトップアプリを操作する:Power Automate Desktop
Googleスプレッドシートを自動化する:GAS
GoogleフォームやGmail、カレンダーと連携する:GAS
さらに短く言うと、次のようになります。
データを集めて整えるならPower Query
Excelそのものを動かすならVBA
複数のサービスをつなぐならPower Automate
Google Workspaceを動かすならGAS
この分け方を知っておくだけでも、ツール選びで迷いにくくなります。
Power Queryは「データを集めて整える」のが得意
Power Queryは、ExcelやCSV、PDFなどからデータを取得し、使いやすい形に整えるための機能です。
例えば、次のような作業に向いています。
毎月届くExcelファイルを一つにまとめる
複数店舗の実績ファイルを結合する
不要な列を削除する
日付や文字列の形式をそろえる
担当者名や会社名の表記ゆれを直す
PDF内の表をExcelに取り込む
マスタデータと照合する
Power Queryの強みは、一度手順を作れば、次回からは元データを差し替えて更新できることです。
毎月、同じようなコピー・貼り付けや列の削除をしている業務では、大きな効果があります。
Power Queryで実際に行ったこと
私はこれまで、次のような処理にPower Queryを使ってきました。
複数の案件ファイルを一つの一覧に結合
PDFの表をExcelデータへ変換
案件の進捗状況を条件によって分類
会社名や担当者名をマスタに合わせて統一
Googleカレンダーの予定を集計用データに変換
案件IDからシステム画面へのURLを作成
特に、複数のExcelファイルを毎月集計している場合は、Power Queryとの相性がよいです。
ただし、Power Queryは基本的に「データの取得と加工」のツールです。
セルの色を変えたり、印刷したり、ボタンを押した後に複数のシートを操作したりする処理は、それほど得意ではありません。
VBAは「Excel自体を操作する」のが得意
VBAは、Excelに組み込まれているプログラミング言語です。
セルへの入力、シートの追加、ファイルの保存、印刷など、Excel上の細かな操作を自動化できます。
例えば、次のような処理に向いています。
ボタンを押して帳票を作成する
指定した条件のセルに色を付ける
シートを複製する
複数のファイルを開いて処理する
PDFとして保存する
印刷範囲を設定して印刷する
入力内容を別シートへ転記する
Power Queryがデータの裏側を整えるツールだとすれば、VBAはExcelの画面上の操作を自動化するツールです。
Power QueryとVBAの違い
例えば、毎月届く10個のExcelファイルを一つにまとめたい場合は、Power Queryが向いています。
一方で、まとめたデータから担当者ごとの帳票を作り、PDFで保存したい場合は、VBAが向いています。
そのため、Power QueryとVBAは競合するものではありません。
実務では、
Power Queryでデータを集める
VBAで帳票を作る
VBAでPDF出力する
というように、組み合わせて使うこともできます。
VBAの注意点
VBAは自由度が高い一方で、処理が複雑になりやすいという特徴があります。
作成した本人しか修正できない状態になることもあります。
また、Excelファイルの列位置やシート名が変わると、処理が止まることがあります。
そのため、単純な集計やデータ加工であれば、最初からVBAを使うのではなく、Power Queryで対応できないかを考えるようにしています。
Power Automateは「サービス同士をつなぐ」のが得意
Power Automateは、Microsoftが提供している自動化ツールです。
メールの受信、ファイルの保存、申請、通知などをきっかけにして、別の処理を実行できます。
例えば、次のような使い方があります。
メールに添付されたファイルを自動保存する
Formsへの回答があったらTeamsへ通知する
SharePointにファイルが追加されたら担当者へ知らせる
承認依頼を送り、回答結果を記録する
決まった時間にデータを取得する
Excelの一覧をもとにメールを送る
Power QueryやVBAは、基本的にはExcelを中心に処理します。
一方、Power Automateは、Outlook、Teams、SharePoint、Formsなど、複数のサービスをまたいで処理できることが特徴です。
こんな場合はPower Automate
例えば、毎朝メールで届く添付ファイルをExcelで集計したいとします。
この場合、次のように役割を分けられます。
Power Automateで添付ファイルを指定フォルダに保存
Power Queryでフォルダ内のファイルを結合
Excelで集計結果を確認
一つのツールですべてを行おうとせず、それぞれの得意分野に分けた方が作りやすくなります。
Power Automate Desktopは「人が画面で行う操作」を自動化する
Power Automate Desktopは、パソコン上の操作を自動化するRPAツールです。
マウス操作やキーボード入力を記録し、デスクトップアプリやWebブラウザの操作を自動化できます。
例えば、次のような作業です。
Webシステムへログインする
決まった画面を開く
データをダウンロードする
Excelへ転記する
デスクトップアプリに数値を入力する
毎朝決まった画面を確認する
私は、毎朝行っていた入金確認の自動化にもPower Automate Desktopを使いました。
人が画面を開き、決まった場所をクリックし、結果を確認するような作業は、自動化できる可能性があります。
Power Automate Desktopの注意点
画面操作を自動化する仕組みなので、Webサイトやシステムの画面構成が変わると、処理が止まることがあります。
また、通信速度や画面の表示時間によって動作が安定しない場合もあります。
そのため、APIやCSV出力など、画面操作を使わずにデータを取得できる方法がある場合は、そちらを優先した方が安定します。
Power Automate Desktopは便利ですが、私は「他に方法がない画面操作」に使うことが多いです。
GASは「Google Workspaceの自動化」が得意
GASは、Google Apps Scriptの略称です。
Googleスプレッドシート、Gmail、Googleカレンダー、Googleフォーム、Googleドライブなどを連携して、自動化できます。
例えば、次のような処理に向いています。
Googleフォームの回答を自動処理する
スプレッドシートの内容をメールで送る
毎日決まった時間に処理を実行する
Googleカレンダーの予定を取得する
シートに入力された内容を別のシートへ転記する
チャットから入力された内容をスプレッドシートへ記録する
外部サービスのAPIからデータを取得する
GASで実際に行ったこと
私は、次のような業務でGASを使っています。
在庫の入庫・出庫内容を毎日メールで報告
Google Chatからビラの配布実績を登録
TrelloのカードをGoogleスプレッドシートへ同期
工事予定表のデータを貼り付けた後に自動整形
担当者や案件番号を条件に応じて自動付与
Googleカレンダーから予定を取得
スプレッドシートの入力内容に応じて選択肢を変更
Google Workspaceを会社で利用している場合、GASは非常に便利です。
スプレッドシート上にボタンを置くこともできますし、毎日決まった時間に自動実行することもできます。
GASの注意点
GASはプログラミングが必要です。
処理が複雑になると、エラーへの対応やメンテナンスが必要になります。
また、Googleサービスには実行時間やAPI呼び出し回数などの制限があります。
そのため、小規模な業務改善には非常に向いていますが、大量のデータを高速処理する用途には適さない場合があります。
同じ「自動化」でも役割が違う
ここまで紹介したツールは、すべて自動化に使えます。
しかし、自動化する対象が違います。
ツール / 主に自動化するもの
Power Query:データの取得・結合・加工
VBA:Excel内の操作
Power Automate:クラウドサービス間の処理
Power Automate Desktop:PCやWeb画面の操作
GAS:Google Workspaceの処理
この違いを理解すると、どのツールを使うべきか判断しやすくなります。
私がツールを選ぶときの順番
実際に業務改善をするときは、次の順番で考えています。
1. そもそも、その作業は必要か
最初から自動化を考えるのではなく、その作業自体をなくせないか考えます。
使われていない集計表や、誰も見ていない報告書を自動化しても、効果は大きくありません。
2. 標準機能だけでできないか
Excel関数、テーブル、フィルター、条件付き書式など、標準機能で解決できないか確認します。
標準機能だけで済むなら、その方が他の人も修正しやすくなります。
3. データ加工ならPower Queryを検討する
毎回同じ形のデータを集めたり、整えたりしている場合は、Power Queryを最初に検討します。
VBAよりも処理内容が画面上で分かりやすく、更新もしやすいからです。
4. Excel操作が必要ならVBAを検討する
帳票作成、PDF保存、印刷など、Excelそのものを操作する必要がある場合はVBAを検討します。
5. 他サービスとの連携を考える
メール、Teams、SharePointなどと連携する場合はPower Automateを使います。
Google Workspace内で完結する場合はGASを検討します。
6. 画面操作しか方法がない場合はRPAを検討する
APIやデータ出力機能がなく、人が画面を操作するしかない場合は、Power Automate Desktopを使います。
ツールを一つに絞る必要はない
業務改善を始めた頃は、一つのツールだけですべてを自動化しようと考えていました。
しかし、実際には複数のツールを組み合わせた方が、簡単で安定する場合があります。
例えば、
GASでデータをスプレッドシートへ集める
Excelからそのデータを取得する
Power Queryで加工する
VBAで帳票を作る
という組み合わせもできます。
重要なのは、使用するツールの数を減らすことではありません。
それぞれのツールに、得意な処理だけを担当させることです。
自動化では「集計機能」だけが価値ではない
以前、Power Queryで案件番号からシステムのURLを作り、Excelの一覧から案件ページを直接開けるようにしたことがあります。
仕組みとしては、URLの固定部分と案件ごとに異なるIDを組み合わせただけです。
高度な集計機能ではありません。
しかし、実際に使う人からは、このリンク機能が意外に喜ばれました。
月別集計や年間実績のような管理側に必要な機能だけでなく、
目的の画面をすぐに開ける
同じ情報を何度も検索しなくてよい
コピー・貼り付けをしなくてよい
入力する場所を迷わない
といった、日々の小さな使いやすさも業務改善です。
ツールを選ぶときは、「どれだけ高度な処理ができるか」だけではなく、実際に使う人が何に困っているかを見る必要があります。
まとめ
Excel業務を自動化するツールには、それぞれ得意分野があります。
Power Queryは、データを集めて整える
VBAは、Excelそのものを操作する
Power Automateは、Microsoftのサービスをつなぐ
Power Automate Desktopは、PCやWeb画面を操作する
GASは、Google Workspaceを自動化する
最初から一つのツールに決めるのではなく、まずは自動化したい作業を分解することが大切です。
その作業が、
データ加工なのか
Excel操作なのか
サービス間の連携なのか
画面操作なのか
を整理すると、適したツールが見えてきます。
私自身も、最初から正解が分かっていたわけではありません。
実際の業務で試しながら、それぞれの得意・不得意が少しずつ分かってきました。
これからExcel業務の自動化に取り組む人は、すべてのツールを一度に覚える必要はありません。
まずは、毎月行っている単純な集計作業をPower Queryに置き換えるなど、小さなところから始めるのがおすすめです。
一つの作業が自動化できると、別の業務にも応用できるようになります。
そして、作業時間を減らすだけでなく、使う人が本来の仕事に集中できる環境づくりにつながっていきます。
