前回の記事で、Power Automate for desktopからExcelファイルの単一セルのデータを読み取る方法について学習しました。
この記事では複数セル、表形式のデータを一括で読み込む方法について学習していきたいと思います。
この記事でわかること
- Power Automate for desktopでExcelの表形式のデータを一括で読み込む色々な方法がわかる。
- 列と行を指定して読み込む方法
- 行だけPADに自動判別してもらって読み込む方法
- 列と行をPADに自動判別してもらって読み込む方法
PADで表データ・複数セルを読み込むには?
「Excelワークシートから読み取り」アクションを使います。
単一セルを読み込む時と同様に複数セルを一括で読み込む場合も「Excelワークシートから読み取り」アクションを使います。
3つのシナリオでフローを作成します。
下記の3パターンのケースを想定してフローを作成したいと思います。
- 行数と列数が固定のExcel表のパターン
- 今後長らく行数・列数の変更予定がないExcel表を想定して行数・列数を固定してフローを作成します。
- 今後長らく行数・列数の変更予定がないExcel表を想定して行数・列数を固定してフローを作成します。
- 行数が可変的なExcel表のパターン
- 行数がひんぱんに更新されるExcel表を想定して可変的な行数に対応できるようにフローを作成します。
- 行数がひんぱんに更新されるExcel表を想定して可変的な行数に対応できるようにフローを作成します。
- 行数と列数を自動判別してもらうパターン
- Power Automate for desktopに表範囲を自動判別してもらいます。
たとえば社員一覧というExcelファイルであれば新入社員入社時や社員の退職によって1年に数回更新されることが予想できます。①のパターンでフローを作成してしまうと社員の増減(行数の変更)があった際に都度フローを書き変えないといけなくなります。このため、②か③のパターンでフローを作成した方が実用性の高いフローが作成できるかと思います。
今回は一応基本としてどちらのケースもご紹介しています。
この記事で使用するテストデータ
下記の表データをExcelに張り付けてテストを行います。
社員番号 | 名前 | 性別 | 生年月日 | 電話番号 | 携帯番号 | メール | 郵便番号 | 住所 | |
1 | 00001 | 田中 戴三 | 男 | 1989/3/9 | 03-3388-3419 | 070-6029-5912 | taizou89@example.com | 132-0023 | 東京都江戸川区西一之江4-8-1-8F |
2 | 00002 | 松野 勝司 | 男 | 1977/7/2 | 090-0866-3992 | ntm6048341@goo.ne.jp | 604-8341 | 京都府京都市中京区岩上町4-1-3 | |
3 | 00003 | 小倉 幸四郎 | 男 | 1994/3/2 | 018-536-4457 | 070-5908-3506 | k-ogura@goo.ne.jp | 018-1617 | 秋田県南秋田郡八郎潟町イカリ8-11-6 |
4 | 00004 | 宮下 秋徳 | 男 | 1987/6/13 | 078-408-7352 | akinorimiyasita@goo.ne.jp | 674-0082 | 兵庫県明石市魚住町中尾8-6-6 |
▲Excelにこのまま張り付けると表組みを維持したまま使うことができます。テスト用にご自由にお使いください。わたしはこのExcelファイルを"C:\Users\user\Desktop\アドレスリスト.xlsx"
に保存しました。
Excelから表データを読み取る方法(固定長の行数)
フロー作成手順
▲Excelグループの中の「Excelの起動」アクションを追加してパラメータを入力します。
- Excelの起動:次のドキュメントを開く
- ドキュメントパス:C:\Users\user\Desktop\アドレスリスト.xlsx
- インスタンスを表示する:オンにします。(バックグラウンドで処理を行う場合はオフにします。)
- 読み取り専用として開く:オンにします。
▲Excelグループの中の「アクティブなExcelワークシートの設定」アクションを追加します。
- Excelインスタンス:%ExcelInstance%
- 次と共にワークシートをアクティブ化:インデックス
- ワークシートインデックス:1
このアクションは開いたExcelのどのシートを操作するのかを明らかにするアクションです。
ここでは一番左のシートを操作したいのでインデックスが1のシートを指定しています。左から2番目のシートの場合はインデックスが2になります。
インデックスではなくシート名を使ってシートを特定する場合は、「次と共にワークシートをアクティブ化」を「名前」に設定してシート名を入力してください!
▲Excelグループの中の「Excelワークシートから読み取り」アクションを追加します。
- Excelインスタンス:%ExcelInstance%
- 取得:セル範囲の値
- 先頭列:1
- 先頭行:1
- 最終列:J
- 最終行:5
- セルの内容をテキストとして取得:チェックオフ
- 範囲の最初の行に列名が含まれています:チェックオン
▲Excelグループの中の「Excelを閉じる」アクションを追加します。
- Excelインスタンス:%ExcelInstance%
- Excelを閉じる前:ドキュメントを保存しない
フローが完成しましたのでフローを実行してみましょう。フロー実行後に「Excelワークシートから読み取り」アクションの出力変数であるExcelData変数を確認して、値が取得できていることを確認します。
▲変数ペインのExcelData変数をダブルクリックします。
▲表データが一括取得されていることを確認します。
Excelから表データを読み取る方法(可変長の行数)
フロー作成手順
▲Excelグループの中の「Excelの起動」アクションを追加してパラメータを入力します。
- Excelの起動:次のドキュメントを開く
- ドキュメントパス:C:\Users\user\Desktop\アドレスリスト.xlsx
- インスタンスを表示する:オンにします。(バックグラウンドで処理を行う場合はオフにします。)
- 読み取り専用として開く:オンにします。
▲Excelグループの中の「アクティブなExcelワークシートの設定」アクションを追加します。
- Excelインスタンス:%ExcelInstance%
- 次と共にワークシートをアクティブ化:インデックス
- ワークシートインデックス:1
このアクションは開いたExcelのどのシートを操作するのかを明らかにするアクションです。
ここでは一番左のシートを操作したいのでインデックスが1のシートを指定しています。左から2番目のシートの場合はインデックスが2になります。
インデックスではなくシート名を使ってシートを特定する場合は、「次と共にワークシートをアクティブ化」を「名前」に設定してシート名を入力してください!
▲「Excel > 詳細 > Excelワークシートから列における最初の空の行を取得 」アクションを追加します。
- Excelインスタンス:%ExcelInstance%
- 列:B(列をアルファベットか数字で指定します。)
このアクションで指定する列は、表の中で空白が許容されない列を指定するようにしてください。詳細は後述のアクションの解説をご覧ください。
▲Excelグループの中の「Excelワークシートから読み取り」アクションを追加します。
- Excelインスタンス:%ExcelInstance%
- 取得:セル範囲の値
- 先頭列:1
- 先頭行:1
- 最終列:J(図はLとなってますが図が間違いです。)
- 最終行:%FirstFreeRowOnColumn – 1%
- セルの内容をテキストとして取得:チェックオフ
- 範囲の最初の行に列名が含まれています:チェックオン
最終行は%FirstFreeRowOnColumn%に最初の空の行番号が入っているのでそれにマイナス1した数字が最終行番号となります。%FirstFreeRowOnColumn%は「Excelワークシートから列における最初の空の行を取得」アクションが生成する変数です。
▲Excelグループの中の「Excelを閉じる」アクションを追加します。
- Excelインスタンス:%ExcelInstance%
- Excelを閉じる前:ドキュメントを保存しない
フローが完成しましたのでフローを実行してみましょう。フロー実行後に「Excelワークシートから読み取り」アクションの出力変数であるExcelData変数を確認して、値が取得できていることを確認します。
▲変数ペインのExcelData変数をダブルクリックします。
▲表データが一括取得されていることを確認します。
Excelから表データを読み取る方法(表領域を自動取得するパターン)
「Excelワークシートから読み取り」アクションには「ワークシートに含まれる使用可能なすべての値」というパラメータを指定することで、最終列番号や最終行番号を入力することなくExcel表領域を自動的に読み取ることができます。
「ワークシートに含まれる使用可能なすべての値」のメリット
- 行数列数を指定する手間を省略できる。
「ワークシートに含まれる使用可能なすべての値」のデメリット
- 使用できるシーンが限られている。
- 安定性が低い。
「ワークシートに含まれる使用可能なすべての値」が使用できるケース
「ワークシートに含まれる使用可能なすべての値」が使用できるExcelシートには以下の条件があります。
「ワークシートに含まれる使用可能なすべての値」が使用できる条件
- A1列から表データが入力されていること
- 表領域以外に使用セルがないこと
▲例えば条件を満たしていない上図のExcelファイルでアクションを実行してみます。
▲アクション実行後のExcelData変数の中身です。
ExcelData変数をみると表のタイトルが入力された1行目から3行目が取得されています。また、9行目~10行目はデータの入力がないため本来は不要ですが罫線が引かれているため空白のまま取得されています。
このように取得できてはいるものの表領域以外の部分も読み込まれてしまっているため、次のアクションで使用するには扱いずらいものになってしまいました。
以上の理由で「ワークシートに含まれる使用可能なすべての値」は使いどころが限られているオプションかなと思います。
また、なぜか表領域よりも小さい範囲でデータを取得してしまうこともあり安定性に不安があるため、正直なところ個人的にはあまり使わない方が良いのかなと思っています。
アクションの個別解説
「Excelワークシートから列における最初の空の行を取得」アクションについて
「Excelワークシートから列における最初の空の行を取得」アクションは、指定列の最初の空の行の番号を返してくれます。このアクションによって、表データに何行目まで使用されるのか判断できます。表データに新しいデータを追加するときや、表データを読み取るときに活用できます。
指定する列は、空白行があると挙動が変わってしまうので注意してください。例えば、下記は上図の表で指定する列を変えてアクションを実行した時の例です。
- B列を指定した場合、最初の空の行=6
- F列を指定した場合、最初の空の行=6
- G列を指定した場合、最初の空の行=5
このため「Excelワークシートから列における最初の空の行を取得」アクションに指定する列は、空白が許容されていない列を指定しましょう。この表の例では社員番号は必ず社員に割り当てられますので「B列」を指定するのが良いでしょう。
「Excelワークシートから読み取り」アクションの「範囲の最初の行に列名が含まれています」オプションについて
表に列名が含まれている場合は「範囲の最初の行に列名が含まれています」オプションを有効にしましょう。後述しますがデータの取り扱いが圧倒的に楽になります。列名がないExcelファイルであっても、Excelファイルを編集可能でしたら表に列名を追加することをおすすめします。
▲「列名が含まれている」チェックオンの場合、列に名前が付くので列単位のデータの取り扱いが楽です。
▲「列名が含まれている」チェックオフの場合、列に名前がないため管理上わかりづらいです。
取得したExcelData変数を活用しよう
「Excelワークシートから読み取り」アクションによってExcelData変数を取得することができました。ExcelData変数はDataTable型と呼ぶ特殊な型の変数です。
次回の記事でDataTable型の変数から1行ずつ取り出して次のアクションで活用する方法について学習したいと思います。
Excelに書き込む
Excelに書き込む方法の解説は下記の記事をご覧ください。
まとめ
以上、この記事ではPower Automate for desktopでExcelデータを読み込む方法について学習しました。
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。