Power Automate| Excel テーブルを動的に読み取ってデータ転記する方法・手順は?

Power AutomateでExcelの表(テーブル)からデータを「自動で読み取って転記」する方法:変動するデータも常に最新に!

 

「Excel(エクセル)のファイルにある表のデータを、Power Automate(パワー・オートメイト)で自動的に読み取って、別のシステムに転記したいんだけど、毎回表の名前が変わるかもしれないし、どうすれば柔軟に対応できるのかな?」「日々更新されるExcelのデータを、SharePoint(シェアポイント)のリストに自動で追加できるようにしたいんだけど、やり方が分からないな…」

こんな風に感じたことはありませんか? Excelファイルは、業務のさまざまなデータを表(テーブル)形式で管理するのに非常に便利です。しかし、そのExcelのデータが別のシステム(例えばSharePointのリストやデータベース)に転記される際、手作業で行うのは時間も手間もかかり、転記ミスも発生しがちです。また、転記したい表の名前がExcelファイルによって異なるなど、「動的に」変化する状況に対応したいと考えることもありますよね。

Power Automateを使えば、Excelの表(テーブル)からデータを自動的に読み取り、それを他のシステムに転記する仕組みを簡単に作成できます。さらに、表の名前が動的に変わるような状況にも、柔軟に対応するための方法があります。これにより、手作業によるデータ転記作業から解放され、情報連携の効率と正確性が飛躍的に向上します。


Excelの表(テーブル)を「動的に読み取る」ってどんなこと?その大きなメリット

Power AutomateでExcelの表を「動的に読み取る」とは、Excelファイルからデータを取得する際に、読み取りたい表の名前(テーブル名)をフローの中に直接決め打ち(ハードコード)するのではなく、状況に応じてそのテーブル名を自動的に判断したり、変数として指定したりしてデータを読み込むことを指します。

 

なぜ「動的に読み取る」必要があるのか?

通常、Power AutomateでExcelの表を読み取るアクション(例:「表に行を一覧表示」)を使う場合、読み取りたい表の具体的な名前(例:「Table1」や「データ_2025年1月」など)を事前に指定する必要があります。しかし、以下のような状況では、この固定的な指定では対応できません。

  • 複数の類似ファイルからデータを読み取りたい場合: 例えば、複数の支店から毎日送られてくる日報Excelファイルは、すべて同じ構造だが、含まれる表の名前だけが異なる場合。
  • テンプレートから作成されるファイル: 特定のテンプレートから自動生成されるExcelファイルでは、自動的に割り振られる表の名前が毎回異なる場合。
  • ファイルの種類が不明確な場合: 特定のファイルが、どのような名前の表を持っているか事前に分からない場合。

「動的に読み取る」ことで、このような状況でもフローが柔軟に対応できるようになり、汎用性が高まります。

 

「動的に読み取る」ことのメリット

  • フローの汎用性向上: 毎回同じ名前の表でなくても、フローが自動的に適切な表を見つけて処理できるため、一つのフローで様々なExcelファイルに対応できるようになります。
  • 手動作業の削減: Excelの表の名前が変わるたびにフローを修正する必要がなくなります。
  • ヒューマンエラーの削減: 表の名前の指定ミスによるフローの失敗を防ぎます。
  • より複雑な自動化の実現: テンプレートベースのレポート生成や、複数のファイルからのデータ統合など、より高度な自動化シナリオを構築できるようになります。

 

Excelの表からデータを読み取るためのPower Automateの主要アクション

Power AutomateでExcelの表からデータを読み取る際には、「表に行を一覧表示 (Excel Online (Business))」というアクションが中心となります。そして、「動的に」読み取るために、このアクションを補完する他のアクションやテクニックを組み合わせます。

 

1. 「表に行を一覧表示 (Excel Online (Business))」アクション

このアクションは、指定されたExcelファイル内の「表(テーブル)」のすべての行(データ)を読み取るための最も主要なアクションです。このアクションでデータを取得した後、そのデータを他のシステムに転記します。

  • どこにファイルがあるか: このアクションは、SharePointやOneDriveなどのクラウドストレージに保存されているExcelファイルに対してのみ利用できます。パソコンのローカルに保存されているExcelファイルは対象外です。
  • Excelの表形式が必須: データを読み取りたい範囲が、Excelファイル内で「テーブル(表)」として設定されている必要があります。単なるセル範囲では動作しません。
  • 出力されるデータ: アクションが完了すると、表の各行が、その列名と共にデータとして出力されます。これを次のステップで利用します。

 

2. 「ブック内のすべてのテーブルを取得する (Excel Online (Business))」アクション(動的な表名検出)

読み取りたい表の名前が事前に分からない場合や、複数の表の中から条件に合うものを探したい場合に、このアクションが役立ちます。このアクションは、指定されたExcelファイル内に存在する全ての表の名前を取得します。

  • どこにファイルがあるか: このアクションも、SharePointやOneDriveに保存されたExcelファイルに対してのみ利用できます。
  • 出力されるデータ: アクションが完了すると、Excelファイル内に存在するすべての表の「名前」と「ID」のリストが出力されます。このリストを元に、目的の表を特定することができます。

 

Excelの表を「動的に読み取って」SharePointリストに転記する具体的な手順

ここでは、SharePointに保存されたExcelファイルからデータを読み取り、それをSharePointのリストに転記するフローを例に、具体的な作成手順をステップバイステップで解説します。特に、「表の名前を変数として渡す」という形で動的に読み取る方法に焦点を当てます。

事前準備:ExcelファイルとSharePointリストの作成

まず、Power Automateで操作するためのExcelファイルと、転記先のSharePointリストを準備します。

  1. 転記元のExcelファイルを作成します。SharePoint(推奨)またはOneDriveに新しいExcelファイルを作成し、ファイル名を「日報_営業部.xlsx」など、分かりやすい名前にします。

    Excelファイルを開き、データが入力される範囲(例:A1からC5)をすべて選択し、「挿入」タブから「テーブル」(または「表」)をクリックします。「先頭行をテーブルの見出しとして使用する」にチェックが入っていることを確認し、「OK」をクリックします。テーブル名はデフォルトで「Table1」などとなりますが、分かりやすい名前に変更しても構いません。

    • 例: 見出しとして「日付」「担当者」「売上」の3つの列を持つ表を作成し、数行のダミーデータを入力しておきます。
  2. 転記先のSharePointリストを作成します。SharePointサイトにアクセスし、「+新規」から「リスト」を選択し、「空白のリスト」を作成してください。リスト名を「日報データ集約」など、分かりやすい名前にします。

    このリストに、Excelの表の見出しと同じ名前の「列」を作成します(例: 「日付」-日付と時刻、「担当者」-ユーザー、「売上」-数値)。これは、Excelのデータを正確に転記するために非常に重要です。

 

ステップ1:Power Automateで新しいフローを作成する

今回は、手動で起動してExcelを読み取るフローを例にします。スケジュール設定やファイル作成トリガーなど、他のトリガーでも同様の操作が可能です。

  1. ウェブブラウザでPower Automateのサイト(https://www.google.com/search?q=make.powerautomate.com)にアクセスし、あなたのMicrosoft 365アカウントでサインインします。
  2. 左側のメニューから「作成」をクリックします。
  3. 表示されるフローの種類の選択肢の中から「インスタント クラウド フロー」(手動でボタンを押して動かすフロー)を選択してください。
  4. フローに分かりやすい名前を付けます(例:「Excel日報データ転記(動的)」)。
  5. 「フローのトリガーを選択してください」の検索ボックスに「手動」と入力し、「フローを手動でトリガーします」を選択します。
  6. 作成」ボタンをクリックします。

 

ステップ2:読み取りたいExcelファイルの「コンテンツ」を取得する

まず、Excelファイルそのものの情報をPower Automateに読み込ませる必要があります。

  1. 「フローを手動でトリガーします」トリガーの下に「新しいステップ」をクリックします。
  2. 検索ボックスに「SharePoint」と入力し、「ファイルのコンテンツを取得 (SharePoint)」アクションを選択してください。
    • サイトのアドレス: 読み取りたいExcelファイルがあるSharePointサイトのURLを選択または入力します。
    • ファイル識別子: Excelファイルへのパスを指定します。「フォルダーアイコン」をクリックし、目的のドキュメントライブラリとExcelファイル(例: 「日報_営業部.xlsx」)を選択します。

 

ステップ3:Excelの表からデータを「動的に」読み取る

ここが「動的に読み取る」ための主要なステップです。ここでは、読み取りたい表の名前をフローの途中で変数に格納し、その変数を利用する方法を説明します。

  1. 「ファイルのコンテンツを取得」アクションの下に「新しいステップ」をクリックします。
  2. 検索ボックスに「変数」と入力し、「変数を初期化します」アクションを選択してください。
    • 名前: varTableName
    • 種類: 文字列
    • : 今回読み取りたいExcelの表の名前をここに入力します。(例: 「Table1」や、もしExcelで名前を変更していればその名前)。この値は、もし異なる表名のExcelファイルを扱う場合は、フローの他の部分で動的に設定するように変更できます。
  3. 「変数を初期化します」アクションの下に「新しいステップ」をクリックします。
  4. 検索ボックスに「Excel Online」と入力し、「表に行を一覧表示 (Excel Online (Business))」アクションを選択してください。
  5. アクションの詳細を設定します。
    • 場所: Excelファイルが保存されているSharePointサイトのURLを選択または入力します。
    • ドキュメント ライブラリ: Excelファイルが保存されているドキュメントライブラリを選択します。
    • ファイル: 読み取りたいExcelファイル名(例: 「日報_営業部.xlsx」)を選択します。
    • テーブル: ここで、先ほど初期化した変数「varTableName」を動的なコンテンツとして選択します。これにより、フローが実行されるたびに、この変数の値として指定された名前の表を読み取るようになります。
    • 【応用:表の名前が不明な場合】: もしExcelファイル内の表の名前が完全に不明で、動的に検索したい場合は、「表に行を一覧表示」アクションの前に、「ブック内のすべてのテーブルを取得する (Excel Online (Business))」アクションを追加し、その出力から目的の表を「条件」アクションや「Apply to each」ループで特定し、その表の名前を変数に格納してから「表に行を一覧表示」アクションに渡すという、より高度なロジックが必要になります。これは非常に複雑になるため、最初は表名をある程度特定できる場合に上記の「varTableName」を使う方法がおすすめです。

 

ステップ4:読み取ったデータをSharePointリストに転記する

Excelから読み取った各行のデータを、SharePointリストに新しい項目として追加します。

  1. 「表に行を一覧表示」アクションの下に「新しいステップ」をクリックします。
  2. 検索ボックスに「制御」と入力し、「Apply to each」(各項目に適用)アクションを選択してください。これは、「表に行を一覧表示」で取得したExcelの各行(データ)に対して、同じ処理を繰り返すためのループです。
  3. 「以前の手順から出力を選択」フィールドにカーソルを置き、動的なコンテンツから「表に行を一覧表示」アクションの「」(読み取ったExcelの表のすべての行データ)を選択します。
  4. 「Apply to each」ブロックの中に「アクションの追加」をクリックします。
  5. 検索ボックスに「SharePoint」と入力し、「項目を作成します (SharePoint)」アクションを選択してください。
    • サイトのアドレス: 転記先のSharePointリストがあるサイトのURLを選択または入力します。
    • リスト名: 転記先のSharePointリスト名(例: 「日報データ集約」)を選択します。
  6. 転記先のSharePointリストの各列に、対応するExcelの表のデータを割り当てます。
    • 「日付」: 動的なコンテンツから、Excelの「表に行を一覧表示」アクションの出力から「日付」列を選択します。
    • 「担当者」: 動的なコンテンツから、Excelの「表に行を一覧表示」アクションの出力から「担当者」列を選択します。
    • 「売上」: 動的なコンテンツから、Excelの「表に行を一覧表示」アクションの出力から「売上」列を選択します。
    • 【ポイント】: 動的なコンテンツの選択肢で、Excelの列名がそのまま表示されます。もしExcelの列名がSharePointの列名と完全に同じでなくても、適切な列を割り当ててください。

 

ステップ5:フローを保存してテストする

すべての設定が完了したら、フローを保存してテストしましょう。

  1. 画面右上の「保存」ボタンをクリックします。
  2. テスト」ボタンをクリックし、「手動」を選択してテストを開始します。
  3. テストが完了するのを待ち、ExcelファイルのデータがSharePointリストに正しく転記されているかを確認します。SharePointリストを開いて、新しい項目が追加されているか、データが正確かを確認してください。

これで、Excelの表からデータを動的に読み取ってSharePointリストに転記する基本的なフローが完成し、自動で動作するようになります。


 

Excelの表を動的に読み取って転記する際の「大切な注意点」

Excelの表を動的に読み取って転記するフローは非常に便利ですが、そのメリットを最大限に引き出し、スムーズな運用を実現するためには、いくつかの重要な注意点を理解し、適切に対処する必要があります。

1. Excelファイルの「テーブル(表)」設定は必須!

Power Automateの「表に行を一覧表示」アクションは、Excelシートのデータ範囲が「テーブル(表)」として設定されていることを前提としています。単なるセル範囲では動作しません。

確認と設定: Excelファイルを開き、データを読み込みたい範囲がテーブルとして設定されているか確認してください。設定されていない場合は、範囲を選択し、Excelの「挿入」タブから「テーブル」をクリックして設定できます。

 

2. 大量のデータを処理する際のパフォーマンスとAPI制限

Excelファイルが非常に大きい(例:数万行以上)場合や、テーブルが大量のデータを含んでいる場合、クエリの読み込みや、その後の「Apply to each」ループでのデータ転記に時間がかかり、タイムアウトエラーやAPIリクエスト制限(429エラーなど)が発生する可能性があります。

対策

  • フィルタークエリの活用: 「表に行を一覧表示」アクションには「フィルタークエリ」(ODataフィルター)というオプションがあります。これにより、Power Automateが読み込むデータ量を減らし、必要なデータだけを事前に絞り込むことができます。
  • 並列処理の制御: 「Apply to each」ループの「設定」で「コンカレンシー制御」(並列処理)を有効にし、「並列度の最大限度」を低めに設定(例:5〜20)することで、API要求の集中を避け、429エラーを防ぎやすくなります。
  • 遅延アクションの追加: 連続するAPI要求の間に数秒の「遅延」アクションを挿入することも有効です。

 

3. データ型の整合性と変換

Excelから読み取ったデータの型(テキスト、数値、日付など)が、転記先のシステム(SharePointリストの列など)で期待されるデータ型と一致しているかを確認することが重要です。

対策

データ型が異なる場合、Power Automateの「式」(Expression)や「作成」(Compose)アクションを使って、明示的にデータ型を変換する処理(例: int(), string(), formatDateTime() など)を挟む必要があります。例えば、Excelの数値が文字列として読み込まれてしまった場合、転記先の数値列に入れる前にint()で数値に変換します。

 

4. Excelファイルの「ロック」や「使用中」の状態

Excelファイルが他のユーザーによって開かれている場合(特にデスクトップ版Excelで開かれていると)、ファイルがロックされてしまい、Power Automateからの読み取りや操作が失敗することがあります。

対策

  • フローの実行時間を、そのファイルが使われていない時間帯(例えば深夜や早朝など)に設定することを検討してください。
  • エラーハンドリングを設定し、ファイルがロックされていた場合に、エラー通知を送ったり、数分待ってから再試行したりするロジックを組み込むことも有効です。

 

5. エラー通知と監視を設定する

データ転記は重要な操作です。Excelからのデータ取得やSharePointへの書き込みが予期せぬ問題で失敗した場合に備えて、必ず「エラーハンドリング」を設定し、Power Automateのフローがエラーになったことを、自動でメールやTeamsに通知する仕組みを構築しておきましょう。これにより、問題発生時にすぐに気づき、対応することができます。

 

6. テスト環境での十分な検証

本番環境で実際にフローを稼働させる前に、必ずテスト環境でフローを十分にテストしてください。様々なシナリオ(例: Excelの表の名前が想定外である、データが空の場合、データソースが一時的に利用できない場合など)を想定してテストを行うことで、本番稼働後のトラブルを未然に防ぎ、スムーズなデータ転記を保証できます。


Power AutomateでExcelの表からデータを自動で読み取り、転記しよう!

Power AutomateでExcelの表(テーブル)からデータを動的に読み取って転記する方法は、手作業でのデータ転記から解放され、情報連携の効率と正確性を飛躍的に向上させるための強力なツールです。

  • まず、Excelファイルにデータを「テーブル」として設定し、SharePointやOneDriveに保存します。
  • Power Automateでは、「表に行を一覧表示」アクションを中心に使い、必要に応じて表の名前を動的に指定するための変数などを活用します。
  • 読み取ったデータは「Apply to each」ループで処理し、「項目を作成します」(SharePoint)などのアクションで転記先に書き込みます。

これらの知識と手順を上手に活用し、Excelのデータを他のシステムと連携させることで、あなたの業務はよりスムーズで自動化されたものになるでしょう。