目次
「毎回行数が違うExcel、どうすればいいの?」
Power Automate Desktop(PAD)を使ってExcelのデータを読み込んだり書き込んだりしていると、こんな悩みにぶつかることがあります。
- 「昨日は10行だったけど、今日は50行…」
- 「固定の範囲(A2:C20)を指定してたら途中までしか取れない…」
- 「追加書き込みしたら、前のデータが上書きされた…」
原因はズバリ、「行数が変わっているのに、範囲が固定になっているから」です。
本記事では、毎回行数が変わるExcelに対しても正しく処理できる方法をステップごとに解説します。
対処法①:読み込むときに「最終行を自動で見つける」
✅ こんなときに使う
- Excelに毎回違う数のデータが入力される
- 注文一覧や集計結果が日によって増減する
🔧 対応手順(読み込みフローの作り方)
- Launch Excel
開発中はVisible = Trueにすると内容を見ながら確認できる - Open Excel Workbook
対象ファイルを開く - Activate Worksheet
対象のシートを指定(例:Sheet1) - Get first free row on column
-Column = "A"にして、A列の空行を探す
- 結果をLastRow変数に保存
(例:データがA1〜A50まであれば、LastRow = 51) - Set Variable
- 新しい変数TargetRange = "A2:C" + %LastRow%を作る
(結果:A2:C51のような文字列になる) - Read from Excel worksheet
-Range = %TargetRange%を指定
- 読み込んだデータをExcelDataに保存(型は DataTable)
💡 ポイント
- A列に値がないと正しく最終行を取得できません。
→ 最も確実な列を基準にしましょう(商品名、注文IDなどが入っている列) - PADは
"A2:C" + %LastRow%のような文字列を範囲として理解します。
対処法②:書き込むときも「空いている次の行」に自動で書く
✅ こんなときに使う
- 新しいデータを既存Excelファイルに追記したい
- 上書きせずに、前回の続きに追加したい
🔧 対応手順(書き込みフローの作り方)
- Launch Excel →
Visible = True - Open Excel Workbook → 書き込み先を指定
- Activate Worksheet → 正しいシートを選択
- Get first free row on column →
%NextRow%という変数に保存 - Write to Excel worksheet
Start column = "A"Start row = %NextRow%Value to write = 書き込むデータ(DataTableなど)
💡 ポイント
- 書き込みの起点になる列(A列など)に空白行がないように注意
- 空行に到達するまでの間に、データが飛び飛びに入っていると誤動作することがあります
補足:テーブルを使えばもっとスマートに!
Excel側で「テーブル化(Ctrl + T)」しておくと、PADで Range = Table1 のように指定するだけで、自動で範囲を判別してくれます。
さらに、データが追加されてもテーブルは自動で拡張されるので、Get first free row が不要になる場合もあります。
よくある失敗とその対処法
| 症状 | 原因 | 対処法 |
|---|---|---|
| 「範囲が存在しません」エラー | Activate worksheet を忘れている | 処理対象のシートをアクティブにする |
| 取得データが空になる | 最終行の取得が誤っている | A列などに必ず値があるようにしておく |
| 追記が前のデータと重なる | Start row を固定にしている | Get first free row を使って空行を見つける |
| 一部しか読み込まれない | 範囲を固定(例:A2:C20)にしている | 最終行まで自動で広げる文字列を使う(A2:C%LastRow%) |
まとめ:毎回変わる行数にも柔軟に対応しよう
🔹 読み込み時は Get first free row + 変数で範囲を組み立てる
🔹 書き込み時は最終行の次の行を探して追加する
🔹 Excelテーブルや名前付き範囲を使うとさらに便利
このように、ちょっとした工夫をするだけで、「昨日は動いたのに今日はエラー」がなくなる安定フローを作ることができます!
