Power AutomateでExcelテーブルを操作する際、「テーブルがロックされています」というエラーに遭遇したことはありませんか。このエラーは、複数のフローが同時に同じテーブルを更新しようとしたり、テーブルの構造を変更する操作が原因で発生します。特に、入力値や条件分岐の設定が適切でないと、ロックが頻発しやすくなります。本記事では、Excelテーブルのロックエラーの原因を特定し、入力値と条件分岐を正しく修正する方法を、実務に即して解説します。
【要点】この記事で確認すること
- 最初に見る場所: フローの実行履歴からエラーメッセージの詳細を確認し、どのアクションでロックが発生したか特定します。
- 切り分けの軸: 端末側(Excelファイルの共有設定)、アカウント側(使用しているライセンスやアクセス権限)、管理設定側(テナントの制限やコネクタの制限)の3つで原因を分類します。
- 注意点: ロックを回避するために「並列処理を許可」をむやみに変更すると、データ整合性が損なわれる可能性があります。変更前にチームや管理者と相談してください。
ADVERTISEMENT
目次
なぜExcelテーブルはロックされるのか?原因の特定方法
Power AutomateがExcelテーブルにアクセスする際、内部的にファイルを開いて書き込みを行います。このとき、他のユーザーや別のフローが同時に同じテーブルを操作しようとすると、Excelの共有ロック(File In Use)が発生します。また、テーブルの構造(列の追加・削除など)を変更するアクションは、テーブル全体をロックする傾向があります。原因を特定するには、まずフローの実行履歴でエラーメッセージを確認しましょう。メッセージに「Table locked」や「Resource conflict」が含まれていれば、ロックが原因です。
ロックの主な発生パターン
- 複数のフローが同時に同じテーブルに書き込む: 例えば、承認フローとレポート生成フローが同時に起動すると衝突します。
- テーブルの構造変更を伴うアクション: 「テーブルに行を追加」は構造を変えないため比較的安全ですが、「テーブルの列を追加」は構造変更のためロックがかかりやすいです。
- Excelファイルが他のユーザーによって手動で開かれている: フローがアクセスしようとした時点で、誰かが編集しているとロックされます。
- 条件分岐で異なるテーブルに書き込むが、同じファイル内: 同一ファイル内の別テーブルでも、ファイル全体がロックされる場合があります。
入力値の直し方:トリガーとアクションの設定見直し
ロックエラーを減らすには、フローがテーブルに送り込む入力値のタイミングと内容を最適化する必要があります。具体的には、以下の手順でトリガーとアクションの設定を見直してください。
- トリガーの並列実行を制限する: フロー設定で「同時実行の最大数を1」に変更します。これにより、複数のインスタンスが同時に動作するのを防ぎます。
- 「変更があったときのみ実行」を有効にする: 特に「ファイルが変更されたとき」トリガーでは、必要最小限の変更でフローが起動するようにフィルターをかけます。
- アクションの「再試行ポリシー」を設定する: ロックエラーが発生した場合に自動的にリトライするように設定します。基本間隔は1秒、最大試行回数は3回程度が目安です。
- 「Excel Online (Business)」コネクタの「テーブルに行を追加」アクションを使用する: このアクションは構造変更を伴わないため、ロックが発生しにくいです。「テーブルを更新」アクションは構造変更を伴う可能性があるので、避けたほうが安全です。
- 入力値のサイズを小さくする: 一度に大量の行を追加しようとすると、ロック時間が長くなります。バッチ処理にして1回あたりの行数を50行以下に抑えましょう。
これらの手順を実施することで、入力値に関連するロックエラーの発生頻度を大幅に減らせます。特に、再試行ポリシーは一時的なロックに対して有効です。
条件分岐の直し方:動的な値と静的テーブル参照のバランス
条件分岐でテーブルを参照する際、どのような条件を使うかでもロックの発生が変わります。動的な値(フロー内の変数)と静的なテーブル参照(直接テーブルを指定)のバランスが重要です。以下の表で、条件分岐の種類とロックリスクを比較します。
| 条件分岐の種類 | ロックリスク | 推奨設定 |
|---|---|---|
| フロー内の変数を条件にする | 低い | 変数を事前に計算して条件分岐に使う |
| テーブルを直接参照して条件分岐 | 高い(テーブルに読み取りロックがかかる) | 可能なら変数に置き換える |
| 「フィルタークエリ」で条件指定 | 中程度(読み取りのみ) | フィルタークエリを最適化し、必要な列だけ取得する |
| 「列の値を取得」アクション | 低い(特定のセルのみ読み取り) | 単一セルの参照に限定する |
条件分岐を直す具体的な方法としては、まずはテーブルへの読み取りアクセスを最小限にします。例えば、フロー開始時にテーブルから一度だけデータを変数に格納し、後続の条件分岐ではその変数を使うように変更します。
実践的な条件分岐の修正手順
- 「テーブルの行を一覧表示」アクションをフローの最初に追加し、必要なデータを変数に格納します。
- 条件アクションで、テーブルを直接参照せずに変数を参照するように式を書き換えます。
- テーブルへの書き込みアクションは、条件分岐の後で1回だけ実行するように順序を変更します。
- どうしてもテーブル参照が必要な条件は、フィルタークエリを使って必要な行だけを取得します。
よくある失敗パターンとその回避策
実際の現場でよく見られる失敗パターンを2つ紹介します。これらのパターンに該当する場合は、すぐに修正してください。
失敗パターン1: 条件分岐の中でテーブルに行を追加している
例えば、承認ステータスに応じて異なるシートに行を追加するフローで、条件分岐の各ブランチ内で「テーブルに行を追加」を配置しているケースです。この場合、複数のブランチが同時に実行される可能性があり、ロックが発生します。回避策としては、条件分岐の後に「スイッチ」アクションや「並列ブランチ」ではなく、順次処理になるように設計します。どうしても並列が必要なら、各ブランチで異なるファイルに書き込むようにしてください。
失敗パターン2: ループ内で同じテーブルに書き込む
「Apply to each」ループの中でテーブルに行を追加するフローは、ループの反復ごとにテーブルをロックします。特にループ回数が多い場合、ロックが長時間続きエラーになります。回避策としては、ループ内でデータを配列に蓄積し、ループ終了後にまとめて「テーブルに行を追加」を実行する(バッチ書き込み)方法が有効です。
管理者に確認すべき設定
個人で修正できない場合は、テナント管理者やPower Platform管理者に以下の設定を確認してもらってください。
- 共有ファイルのバージョン管理: SharePointやOneDriveのファイルで「以前のバージョンを保持」が有効だと、ロックが発生しやすくなります。必要に応じて設定を変更してもらいましょう。
- Power Automateの「同時実行制限」: 環境レベルでフローの同時実行数を制限するポリシーがあるか確認します。特にプレミアムライセンスが割り当てられている場合、制限が緩くなっていることがあります。
- Excel Onlineのコネクタ制限: テナント全体でExcel OnlineコネクタのAPI呼び出し制限(リクエスト数/分)が設定されている場合があります。大量の書き込みを行うフローは制限に引っかかる可能性があるため、データを分散するなどの対策が必要です。
よくある質問(FAQ)
Q. ロックエラーが発生した場合、フローは自動的に再試行してくれますか?
A. デフォルトでは再試行されません。アクションの設定で「再試行ポリシー」を有効にする必要があります。また、同じアクションで連続して失敗すると、ポリシーが無視されることがあるため、エラーハンドリング(「スコープ」と「設定で構成されたハンドラー」)を併用することを推奨します。
Q. テーブルを直接操作せずに、Excelファイルを更新する方法はありますか?
A. 代替手段として、ExcelファイルをCSVやJSON形式で扱う方法があります。Power Automateでは「ファイル コンテンツの取得」アクションでファイルを読み込み、必要に応じて変換してから書き戻すことで、テーブルロックを回避できます。ただし、テーブルの書式や数式が失われるため、用途を限定してください。
Q. 複数のユーザーが同時にExcelファイルを開いていても、フローが問題なく動くようにすることはできますか?
A.
ADVERTISEMENT
超解決 Excel・Word研究班
企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。
Office・仕事術の人気記事ランキング
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
- 【Excel】矢印キーで「セルが動かず画面がスクロールする」!ScrollLockの解除方法(ノートPC対応)
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
- 【Teams】画面共有時に「音声」も共有する方法!音が流れない時の設定手順
