Excel Onlineで別のブックに大量データをコピーしようとして、「コピー&ペーストが途中でエラーになる」「Power Automateで自動化したいが動かない」と困っていないでしょうか。
Excel Onlineのコピー&ペーストには200万セルの上限があり、Power Automate + Office Scriptsでの自動化も5MBの転送制限で動きません。
さらに、Excel OnlineとローカルExcelでは使える方法がまったく異なるため、環境を考慮せずに手段を選ぶと遠回りになります。
この記事では、複数の方法を実際に検証した結果をもとに、環境別のコピー方法と200万セルを超えるデータに対応した運用手順を整理しています。
環境別にどの方法が使えるか?
使える方法は環境によって変わります。
| 方法 | 環境 | 大量データ対応 |
|---|---|---|
| 手動コピー(分割) | Excel Online | ○(1回200万セル以下に分割) |
| シートをコピーして別ブックへ | ローカルExcel | ○(シート単位・最も簡単) |
| Power Query | ローカルExcel | ○(定期参照・集計向き) |
| VBA(配列転送) | ローカルExcel | ○(大量データ・完全コピー対応) |
| Power Automate + Office Scripts | Excel Online | NG(5MB制限で大量データは動かない) |
Excel Onlineでは自動化が難しく、分割手動コピーが現実解です。
ローカルのExcelが使える環境なら、シートコピーを最初に検討する価値があります。
Excel Onlineのベストプラクティス(分割手動コピー)
Excel Onlineでコピー&ペーストできる範囲の目安は200万セルです。
これを超えるとエラーになるため、1回の操作が200万セル以下になるように分割します。
分割数の計算基準
分割数は「列数 × 行数」で判断します。
例:データが30列・10万行の場合
- 30列 × 5万行 = 150万セル → 200万セル以下なのでOK
- 30列 × 7万行 = 210万セル → 200万セルを超えるためNG → さらに分割
列数が少ないデータは1回あたりの行数を増やせます。
列数が多いデータは行数を絞ります。
計算結果が200万セルを下回る範囲に収めることが判断基準です。
手順
- コピー元のブックで、1回目の範囲(例:1~5万行目)を選択する
- Ctrl+Cでコピーする
- コピー先のブックを開き、貼り付け開始位置(A1)をクリックする
- Ctrl+Vで貼り付ける
- 2回目の範囲(例:5万1行目~最終行)を選択し、続きの行に貼り付ける
- 必要な回数だけ繰り返す
実際にこの方法で運用した結果、自動化を含む他の選択肢と比較した上でこれが最善と判断しました。
手順をドキュメント化して関係者と共有する形で定着しています。
なお、ローカルのExcelには「シートを別ブックにコピー」という簡便な機能がありますが、Excel Onlineではこの機能は使えません。
そのためExcel Onlineでは手動コピーが事実上の唯一の選択肢です。
Power Automate + Office Scriptsで自動化できないのはなぜか?
Excel Onlineでの自動化手段としてPower Automate + Office Scriptsの組み合わせが思い浮かびますが、この構成にはクロスブック制約と5MB転送制限という二つの壁があります。
Office Scriptsのクロスブック制約
Office Scriptsは実行対象のブック(1つ)しか操作できません。
別の.xlsxファイルを同一スクリプト内から直接参照する方法は存在しない仕様で、別ブック間でデータを移すにはPower Automateが2つのブックの間で仲介する構成が必要になります。
具体的には、まずブックA側のOffice Scriptsがデータを読み取ってPower Automateに返し、Power Automateがそのデータを受け取ってブックBへ渡し、ブックB側のOffice Scriptsが書き込む、という3段の中継です。
Power AutomateとOffice Scripts間のデータ転送制限
この構成でPower AutomateとOffice Scriptsの間でやり取りできるデータ量は5MBです。
平均的なデータサイズを前提にすると、数千行~1万行前後で上限に当たります。
200万セルのデータはこの制限を大幅に超えるため、この構成では動きません。
バッチ処理(行を分けて複数回実行)する方法もありますが、Power Automateには1日1,600回の実行制限と1回120秒のタイムアウトがあります。
200万セルを分割して収める設計は実装コストが見合いません。
現時点での判断
現時点では有効な自動化手段が見当たらず、分割手動コピーの手順をドキュメント化するのが実務上の費用対効果では最善です。
ローカルExcelではどの方法が使えるか?
ローカルのExcel(デスクトップ版)が使える環境では選択肢が広がります。
シートコピー・Power Query・VBAの三つがあり、用途によって使い分けます。
シートをコピーして別ブックへ(最も簡単)
データがシート単位で管理されているなら、シートごと別ブックに複製する方法が最速です。
手順:
- コピー元ブックでシートタブを右クリックする
- 「シートの移動またはコピー」を選択する
- 移動先ブックのプルダウンから対象ブックを選ぶ
- 「コピーを作成する」にチェックを入れる
- OKをクリックする
大量のデータが入ったシートでも数秒で完了します。
シート単位の複製で要件が満たせる場合は、他の手段を検討する前にこれを試す価値があります。
この機能はExcel Onlineでは使えません。
Power Query(定期参照・集計向き)
Power QueryはローカルのExcelに標準搭載されているデータ取り込みツールです。
別ブックを読み込んで集計した結果をシートに展開でき、数百万行規模でも実用的な速度で処理します。
「毎回全データをコピーする」設計から「元ブックを参照して集計結果だけを持つ」設計に変えると、大量データの移動自体を省けます。
手順:
- 「データ」タブ → 「データの取得」→「ファイルから」→「Excelブックから」
- 対象ファイルとシートを選択し、Power Queryエディターで整形する
- 「閉じて読み込む」でシートに展開する
VBA(完全コピー向き)
データをそのまま別ブックにコピーしたいときはVBAが使えます。
配列を使った一括転送にすることで大量データでも高速に処理できます。
Sub CopyToAnotherWorkbook()
Dim data As Variant
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' コピー元のデータを配列に読み込む
data = Workbooks("コピー元.xlsx").Worksheets("データ").UsedRange.Value
' コピー先に一括書き出す
Workbooks("コピー先.xlsx").Worksheets("データ") _
.Range("A1").Resize(UBound(data, 1), UBound(data, 2)).Value = data
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub このコードが何をしているか:
UsedRange.Valueでコピー元のデータを2次元配列に読み込むResize()で書き込み先のサイズを合わせる.Value = dataで配列のデータを一括書き出すScreenUpdatingとCalculationを一時停止して処理を高速化する
自分のデータに合わせて変える場所:
"コピー元.xlsx"と"コピー先.xlsx"を実際のファイル名に変える"データ"をシート名に変える- 両方のブックを先にExcelで開いておく
VBAはExcel Onlineでは動きません。
ローカルのExcel専用です。
まとめ:環境ごとの最善手
Excel Onlineで別ブックに大量データをコピーする場合、現時点では分割手動コピーがベストプラクティスです。
1回のコピー&ペーストが200万セル以下になるように「列数 × 行数」で計算して分割します。
Power Automate + Office Scriptsによる自動化は5MB制限で動かず、実装コストも見合わないと判断しました。
ローカルのExcelが使える環境ならPower QueryやVBAで対応範囲が広がります。
Excel業務の自動化について相談してみませんか?
「200万セルの分割コピーを毎回手作業でやりたくない」「Power Automateで組んだフローが制限に当たって動かない」「社内に自動化の設計ができる人材がいない」
少しでもお心当たりがあれば、お気軽にご相談ください。
現在、Excel業務の自動化に関するお悩みをお伺いする 無料の個別相談 を実施しています。
よくある質問
Q. 200万セルの上限はシート全体の合計ですか?
1回のコピー&ペースト操作あたりの上限です。
分割して複数回に分ければ、合計で200万セルを超えるデータも移動できます。
Q. Power QueryはExcel Onlineでも使えますか?
Power Queryのデータ取得機能はローカルExcel(デスクトップ版)限定です。
Excel OnlineからはPower Queryエディターを開けません。
Q. VBAのコードはどう実行しますか?
Excelデスクトップ版でAlt+F11を押してVBAエディターを開き、標準モジュールにコードを貼り付けてF5で実行します。
両方のブックを先に開いておく必要があります。