この記事では、Microsoftが無料で提供しているRPA『Power Automate Desktop』で、Excel(エクセル)の最終行を取得する方法を説明します。
最終行の取得は、RPAやExcel(エクセル)のVBA・マクロ機能を使って事務作業を効率化する場合、順次、複数レコードを処理する際に必ず必要になる機能です。
Power Automate Desktopでも、最終行の取得は1アクションで簡単に実現できます。
今回は、簡単な1アクションの方法のほか、レコードの中間に空白行が存在する可能性がある場合に用いる、列の下から最終行を取得する方法も画像付きで解説しますので、学習中の方やお困りの方は、ぜひご一読ください。
基本的な最終行の取得方法
<参考>
アクションExcelの起動を使うと、変数が自動的に生成されます。この変数はExcel(エクセル)ブックを特定するための変数と理解してください。
Power Automate Desktopの場合、列はすべて数値で扱います。例えば、A列は数値の1、B列は数値の2となります。なお、アクションExcelワークシートから列における最初の空の行を取得を使った場合にも、変数が自動的に生成されます。この変数は指定した列の最終行の次の行番号が格納されます。
以上で、Excel(エクセル)の最終行を取得するフローは完成です。アクションメッセージを表示などを使って、正しく取得できているか確かめてみましょう。
列の下から最終行を取得する方法
下から取得する必要性
基本的な最終行の取得方法は前記の通りですが、実務の世界では、Excel(エクセル)のレコードの中に空白の行が存在しないとも限りません。そのため、最終行の取得は列の最も下のセルから上に向かって取得する方法が好まれる傾向にあります。Power Automate Desktopでも実現できますので、紹介しておきます。
<実例>
Excel(エクセル)で最終行を取得する際、RPAを含むプログラムでは、ctrlキーと方向キーを使って取得していると考えてください。つまり、普通に取得する場合は「セルA1にカーソルをおいた状態で、ctrl+下」でカーソルが止まった位置を最終行と認識します。下から取得する場合には「Excelの最下段の行、セルA1048576にカーソルをおき、ctrl+上」で取得します。この場合、レコードの中間に空白の行があっても正しく取得できますね。
<見本~基本的な最終行の取得方法>
<見本~下から最終行を取得する>
Power Automate Desktopで実現
フロー全体図
各アクションの設定(フロー詳細)
1.Excelの起動
2.Excelワークシート内のセルを選択
このアクションで、カーソルをおくセルを指定します。今回は最下段となる1048576を指定しています。なお、このアクションは複数セルを範囲指定するための機能を備えているため、セルを指定する項目だけで4つ存在していますが、ひとつのセルを指定する場合には、上記のように設定します。
3.ウィンドウにフォーカスする
このアクションは重要な意味をもっています。操作対象のExcel(エクセル)シートをアクティブ状態にするためのもので、このアクションを省いてしまうと、次のアクションキーの送信がうまく機能しません。
4.キーの送信
最終行を取得するためのキー操作、ctrl+上を送信しているアクションです。キー入力の間隔の遅延は、ここでは気にしなくてよいです(同時押しのため)。
5.選択したセル範囲をExcelワークシートから取得
この前のアクション、キーの送信で止まったセル位置を変数に格納するためのアクションです。このアクションも複数セルを範囲指定するための機能を備えているため、4つの変数が生成されます。実際には、FirstRowIndexとLastRowIndexに最終行が格納されています(単一のセルのため同じ値が取得される)。
あとがき
事務作業をRPAを使って自動化するとき、想定される事象は可能な限り組み込んでおくことで、処理の品質を高め、メンテンナンスの頻度を少なくすることができます。
例えば、Excel(エクセル)自体に制御を施し、中間に空白の行が存在することがないのであれば、基本的な最終行の取得方法でも構いませんが、実務担当者を交えて想定される事象は可能な限り洗い出し、予め対処しておくとよいでしょう。
ただし、考え過ぎ、完璧主義は禁物です。その後のテスト工程や並行運用をうまく使いながら、効率的に取り組みましょう。