
何十年もの間、Excelユーザーが反復タスクを自動化したいと考えたとき、その答えは常に「Visual Basic for Applications(VBA)」でした。VBAは非常に強力ですが、プログラミングの知識が必要であり、Microsoft Officeのデスクトップ環境内でしか動作せず、初心者にはハードルが高い面があります。しかし現在では、最新のクラウドベースの代替ツールが存在します。それがMicrosoft Power Automateです。
Power Automate(旧Microsoft Flow)を使用すると、お気に入りのアプリやサービス間で自動化されたワークフローを構築し、ファイルの同期、通知の受信、データの収集などを行うことができます。何より素晴らしいのは、プログラミングの知識が全くなくても始められる点です。この包括的なガイドでは、VBAを1行も書かずに、Power Automateを使ってシームレスなExcel自動化を実現する方法を探ります。
「どのように」を行うかに入る前に、「なぜ」を理解することが重要です。VBAの基礎:初めてのExcelプログラムを学ぶことは、デスクトップ環境に限定された複雑なスプレッドシート操作において今でも価値のあるスキルですが、現代のネットワーク化された職場ではPower Automateが輝きを放ちます。
どちらのツールを使用するべきかの簡単な比較は以下の通りです:
| 機能 | Excel VBA | Power Automate |
|---|---|---|
| 環境 | デスクトップ(主にオフライン) | クラウドベース(インターネット接続が必要) |
| 学習曲線 | 急激(プログラミング知識が必要) | 緩やか(視覚的なドラッグ&ドロップ操作) |
| 外部連携 | 困難(複雑なAPI連携が必要) | 数百種類のアプリとネイティブに連携 |
| トリガーの種類 | ブックのイベント(開く、クリック、変更) | 外部イベント(メール受信、フォーム送信、Webhook) |
外部ソースからのデータ入力を自動化したり、スプレッドシートのデータに基づいて自動的にメールを送信したり、ExcelをSalesforce、SharePoint、Outlookなどのソフトウェアと連携させたい場合、Power Automateが最適な選択肢です。一方で、数百のローカルファイルにまたがって書式設定を行うようなExcel VBAを使ったレポート自動化に特化している場合は、依然としてVBAに軍配が上がります。
Power Automateでは、自動化された一連の動作をフローと呼びます。すべてのフローは、主に3つの基本要素で構成されています:
Power Automateを使ってExcelを正しく自動化するには、環境が2つの重要な要件を満たしている必要があります:
Power Automateはクラウドサービスであるため、パソコンのCドライブなどにローカル保存されたExcelファイルとは確実に連携できません。ブックはOneDrive for BusinessまたはSharePointのドキュメントライブラリに保存されている必要があります。
Power Automateは、空のワークシートに単にデータを書き込むことはできません。明確な境界線が必要です。対象となるデータ範囲を正式なExcelテーブルとして書式設定する必要があります。手順は以下の通りです:
非常に実用的なシナリオに沿って進めてみましょう。受信した問い合わせメールを自動的にExcelスプレッドシートに記録するというものです。これは、手作業でのデータ入力をなくすことであるスタートアップがExcelの自動化で週に20時間を節約した方法の完璧な例です。
OneDriveに「Email_Log.xlsx」という名前の新しいExcelファイルを作成します。以下の見出しを持つテーブルを作成してください:
この範囲をテーブルとして書式設定し、「EmailLogTable」という名前を付けます。ファイルを閉じます。
Power Automate(make.powerautomate.com)にログインします。左側のサイドバーで作成をクリックし、自動化したクラウド フローを選択します。
フロー名に「受信メールの記録」と入力します。「フローのトリガーを選択してください」の検索ボックスに「Outlook」と入力し、新しいメールが届いたとき (V3) - Office 365 Outlookを選択して[作成]をクリックします。
フローデザイナーで、トリガーのボックスをクリックします。ここで、特定の件名フィルター(例:「問い合わせ」)を含むメールにのみトリガーさせるなどのパラメーターを指定できます。この演習では、受信トレイのすべてのメールでトリガーされるように設定したままにします。
+ 新しいステップボタンをクリックします。「Excel」を検索し、Excel Online (Business)コネクタを選択します。アクションのリストから、表に行を追加(Add a row into a table)を選択します。
次に、ファイルの場所をマッピングします:
テーブルを選択すると、ステップ1で作成した列見出しが自動的に表示されます。各フィールドをクリックして、「動的なコンテンツ」(メールのトリガーから取得したデータ)を割り当てます:
保存をクリックします。これで、VBAを1行も書かずに完全に機能する自動化が完成しました!自分のアカウントにテストメールを送信して、Excelテーブルに自動的にデータが追加されるのを確認してください。
Power Automateの注意点の1つは、取り込まれたデータが希望通りの書式になっていない場合があることです。たとえば、メールの例での受信日時は、複雑なISO 8601形式のタイムスタンプ(例:2023-11-28T14:32:00Z)としてインポートされます。
Power Automateの複雑な式を使ってこれを解析しようとする代わりに、テーブル内の標準的なExcel関数に頼ることができます。Excelテーブルに「Clean Date」という新しい列を追加します。正式なExcelテーブルを使用しているため、最初の行に数式を書くだけで、Power Automateが新しい行を追加するたびに自動的にその数式が下へとコピーされます。
タイムスタンプから日付のみを抽出するには、標準の書式設定と組み合わせて、LEFT関数とVALUE関数を使用します:
=VALUE(LEFT([@[Date Received]], 10))
Excelでこの新しい列の書式を「短い日付形式」に設定します。これで、フローが実行されるたびに、Excelが即座にデータ変換を処理してくれます。
この仕組みを利用して、入力データをクロスリファレンスすることも可能です。たとえば、送信者のメールアドレスが別のワークシートにある既存のクライアントのものかどうかを確認したい場合、自動化されたテーブル内で直接INDEX MATCH:優れた検索方法を使用できます:
=IFERROR(INDEX(Clients!B:B, MATCH([@[Sender Email]], Clients!A:A, 0)), "New Lead")
この設定により、スプレッドシートはデータを自動的に分類する、生きたデータベースへと進化します。
テーブルへの行の追加はほんの始まりに過ぎません。Power Automateには、他にもExcel用の強力なアクションがいくつか用意されています:
毎週金曜日の午後5時に売上データのサマリーを送信する必要があるとします。毎週トリガーされるスケジュール済みクラウド フローを作成することができます。このフローでは、「表内に存在する行を一覧表示」を使用して1週間分のデータを取得し、データ操作アクションの「HTML テーブルの作成」を使用して書式を整え、Outlookコネクタ経由で送信します。これは、複雑なマクロを使ったレポート作成に代わる素晴らしい手段となります。
データがExcelに届く前にさらに高度なデータ操作を行いたい場合は、Power Automateの素晴らしいパートナーとなるPower Query:プロのようにデータをインポート・変換するについて調べてみるのも良いでしょう。
より複雑なフローを構築していくと、よくあるいくつかの壁にぶつかるかもしれません。以下にその解決方法を示します:
誰かがデスクトップアプリでExcelファイルを開いており、それがOneDriveに正しく同期されていない場合、Power Automateが行の追加に失敗する可能性があります。ファイルのロックを防ぐため、常にファイルが「自動保存」に設定され、共有クラウド環境に保存されていることを確認してください。
Excelのテーブルを削除して再作成した場合、新しいテーブルに全く同じ名前を付けたとしても、Power Automateとの接続は失われます。Excelはすべてのテーブルに非表示の一意の識別子を割り当てています。テーブルを再作成した場合は、フローに戻り、ドロップダウンメニューからテーブルを再選択して、動的なコンテンツをマッピングし直す必要があります。
「表内に存在する行を一覧表示」アクションを使用する場合、Power Automateはデフォルトで返される行数を256行に制限しています。テーブルに1,000行ある場合、すべてを取得することはできません。これを解決するには、アクションの3つの点(...)をクリックし、設定を選択して、改ページ(Pagination)をオンにし、しきい値を希望の数値(最大100,000)に設定します。
手作業によるデータ入力からPower Automateへ移行するには、スプレッドシートに対する考え方を変える必要があります。もはや単にセルを埋めているのではなく、データシステムを設計しているのです。これらのシステムを完璧に機能させるには、自動で送られてくるデータを処理するための堅牢なExcelの数式がテーブル内に必要です。
Power Automateがもたらすデータを処理するために、VLOOKUP、INDEX、MATCHなどの関数や、ネストされたIF文を組み合わせるのに苦労しているなら、GPTExcelがお役に立ちます。たとえば、「自動入力された日付の列をチェックして、30日以上前なら『Overdue』と返す数式が欲しい」のように、やりたいことを自然な言葉で説明するだけで、GPTExcelがすぐに貼り付けて使える正確な数式を瞬時に生成します。
基本バージョンのPower Automateは、ほとんどのMicrosoft 365の法人向けおよび教育機関向けサブスクリプションに含まれています。これには、Excel Online、Outlook、SharePointなどの標準コネクタが含まれます。プレミアムコネクタ(SalesforceやカスタムAPIなど)を使用するには、単体のPower Automateプレミアムライセンスが必要です。
はい、実行できますが注意点があります。Power Automateの「スクリプトの実行」アクションを使用して、Office スクリプト(TypeScriptで書かれた、Microsoftの最新のクラウドベースのVBA代替ツール)を実行できます。ただし、複雑なオンプレミスデータゲートウェイを使用しない限り、クラウドから従来の「.xlsm」形式のVBAマクロを直接トリガーすることはできません。
トリガーによってポーリング(確認)間隔が異なります。一部のトリガー(ボタンのクリックやHTTPリクエストなど)は瞬時に実行されますが、ポーリングトリガー(「新しいファイルが作成されたとき」や「メールが届いたとき」など)は、Microsoft 365のライセンスの階層によっては、イベントを認識するまでに数分かかる場合があります。
はい!Power AutomateはMicrosoftのエコシステムに限定されていません。完全にサポートされたGoogle スプレッドシートのコネクタがあり、Excel Onlineと同じように、Google Workspace上でデータの行を追加・取得・更新することができます。
Power Automateを使って、VBAなしでExcelのタスクを自動化する方法を解説します。イベント駆動型のフローの作成、データ処理、他アプリとの連携方法を学びましょう。
VBAを使ってExcelで自動化されたレポートシステムを構築する方法を解説します。データの取得、数式の挿入、セルの書式設定、レポートの出力などを、ステップバイステップのコード付きで学びましょう。
Excel VBAでのプログラミングを始めましょう。[開発]タブ、変数、ループ、条件分岐の基礎を学び、ゼロから実際に動くマクロを初めて作成する方法を解説します。