WinActor
つねに同じデータ件数のファイルや、項目の位置が同じ申請書などの単票からデータを取得するのであれば、基礎知識だけでもある程度自動化ができるでしょう。しかし、ほとんどの場合は、前回とは異なるデータ件数のファイルや、同じファイルでも前回処理した時からデータ件数が増減しているケースが多いと思います。
今回は応用編として、要件に合わせて処理の範囲や項目の位置を動的に設定する方法のなかでも、とくに利用頻度の高い「まとめて範囲を指定する」「指定行から1件ずつ最終行まで処理を繰り返す」「検索結果を取得する(1件のみ)」の3つのやり方を紹介します。
これらやり方をマスターすれば、Excelを扱うさまざまな業務を簡単に自動化できます。
まずは、特定の範囲をコピー、削除する際などの「範囲」を適切に設定する方法を解説します。
この処理は、以下の3つのステップで行います。
イメージしやすくするために、下の政令指定都市を列記したExcel表(以下、「政令指定都市Excel表」)を用います。この表の「B列3行目」から「D列最終行」までを範囲指定してコピーする場合を想定して解説していきます。
今、開いているExcelの最終行を動的に取得するには、ライブラリ「Excel操作(最終行取得1~4)」を利用します。
Excel操作(最終行取得)を使用すれば、指定したExcelの指定した列の最終行を取得できます。
異なるデータ行数のExcelファイルを開いても、つねにそのファイルの最終行を取得できます。
今回はD列の最終行を取得します。
「政令指定都市Excel表」だと最終行として変数【最終行】の中身が「17」となります。
(1)で取得した最終行(17)と列(D)を連結してコピー範囲の最終セルを作成します。
最終行(数字)を取得しただけだと、Excelの範囲として指定することができません。
範囲として指定できるように取得した最終行に列情報を連結させて、セル(A1形式)として認識できるように加工します。
【文字列の連結】で文字「D」と変数【最終行(中身:17)】を連結して「D17」という文字列を作成し、変数「終了セル」に格納します。
(2)で作成した最終セルと開始セル(B3)を範囲として指定していきます。
範囲コピーの設定項目「終了セル」に、D列の最終行(A1形式)のセルが格納されている変数を指定します。
今回例として紹介したExcel範囲コピーでは、範囲の位置を「A1」形式で指定する必要がありましたが、処理で使いたい部品にどのような形式のパラメータが必要で、どうすれば最適な値を設定することができるかをそれぞれ考える必要があります。
範囲選択の「開始セル」は「B3」を指定し、「終了セル」に変数「終了セル(中身:D17)」を指定します。
このようにすることで、範囲を選択してコピーすることができます。
次は、データを1件ずつ順番に読み書きして、最終行まで繰り返す時の方法について解説します。
この処理は、以下の3つのステップで行います。
イメージしやすくするために、下の請求書を一覧化したExcel表(以下、「請求書一覧Excel表」)の「2行目」から「最終行」まで処理を繰り返す場合を想定して解説していきます。
処理回数を決めるために、最終行を取得して処理回数とします。
Excelで表(リスト)形式のデータを上から順番に処理したい場合、処理範囲を決めなければいけません。
今回、1行目はヘッダー行なので、2行目から最終行(今回は7行目)まで処理を繰り返します。
Excel操作(最終行取得)を使ってデータの最終行を取得します。「請求書一覧Excel表」だと最終行として変数【最終行】の中身が「7」となります。
(1)で処理回数が決まったので、読み書きする際の処理を設定していきます。
処理範囲が決まったら「繰り返し」処理で、「どこからどこまで」を繰り返すかと「今処理している行」を指定します。項目「カウンタ」は、主に繰り返し処理の「範囲」指定の際に使用する項目で、繰り返し実行時に「今処理している行(数字)」の情報が格納されます。
繰り返し処理の設定は「範囲」を選択し、「2」行目から変数「データ最終行(7)」まで繰り返すよう指定します。
また、項目「カウンタ」には変数「データ現在行」を指定します。
繰り返し処理で範囲を指定した場合の動作について補足です。
繰り返し処理で「範囲」を指定した場合、指定された数値の範囲で繰り返しを行います。
例えば、範囲で2から7を指定した場合、カウンタが2、3…6、7と変化しながら計6回の繰り返しが行われます。
繰り返し処理のなかで、A列の「登録日付」の値を取得した場合の例を見ていきます。
ライブラリ「Excel操作(値の取得2)」を配置して実行します。
1回目の繰り返しでは開始行2行目の値「2024/03/20」が取得できました。
繰り返しの2回目になると、行が1行進み3行目の値「2024/03/21」が取得できました。
このようにすることで、繰り返しのなかの処理が1回ずつ終わるたびに1ずつカウンタが進み、最終行(今回だと7)まで繰り返すことができます。
最後は、対象データの有無を確認する時の方法について解説します。
この処理は、以下の3つのステップで行います。
イメージしやすくするために、下部左の都道府県の情報を一覧化したExcelの「都道府県名」を政令指定都市一覧Excelで検索し、見つかったら都道府県庁所在地名を取得する場合を想定して解説していきます。
まずは、繰り返し処理を使って検索対象文字列を取得し、検索していきます。
繰り返し処理で「都道府県一覧」の「都道府県」を順番に読み込み、
読込んだ「都道府県」を使って「政令指定都市一覧」の「都道府県」を検索します。
検索する際には、Excel操作(検索一致)を使用します。
検索対象のファイル、検索するキーワード、検索する範囲、検索結果を格納する変数を設定します。
検索結果によって処理を分けます。
Excel操作(検索一致)を使って検索をかけると、プロパティ画面で指定した「検索結果(行)」と「検索結果(列)」に処理結果が返ってきます。返ってきた結果を「分岐」処理で判断すれば「見つかったら○○をする」「見つからなかったら○○をする」という処理につなげることができます。
Excel操作(検索一致)では、対象が見つかると、見つかった場所のセル位置が取得されます。
※列情報は数値で返ってくるので注意
反対に対象が見つからない場合は、空白が返ってきます。
この特性を活かして、ノード「分岐」を使用します。
これにより対象が見つかって、変数【検索結果(行)】に値が入っていれば、上のキャプチャ画像左側の処理を行い、値が入っていなければ対象が見つからなかったと判断できるので、キャプチャ画像右側の処理を行います。
最後に、対象が見つかった場合、見つかった列の隣の列の値を取得して、都道府県庁所在地名を取得します。
Excel操作(検索一致)で、見つかった行の任意の列を指定すれば検索したデータの別の項目を取得できます。
繰り返し処理のなかで行うことで、意図した範囲のデータを検索・取得することができます。
見つかった時の変数【検索結果(行)】を利用して取得する列をC列に指定して都道府県庁所在地名を取得します。
このようにすることで、検索したいキーワードから検索したい情報を取得することができます。
いかがでしたでしょうか?
Excel関連処理での一番のポイントは、各処理の処理範囲を「ほかの処理を使って適切な範囲を設定する」必要があるところです。
まず使いたい処理を探し、プロパティ画面を開いてみましょう。
そこで各項目にどのような値を設定すれば良いかを確認し、どうすればそれぞれの値を適切に設定できるかを一つずつ順番に考えていけば決して難しくはありません。
実際に開発を行う際は、各設定項目にまずは固定値(値⇒)で直接、値を設定して処理の動作を確認し、想定どおりの動作であれば固定値を変数に置き換えて汎用化していく方法が非常にわかりやすいです。
このコラムが皆さんの日常業務の一助となりますように!
【RPA開発Tips】Excel操作に強くなる テクニック編
【RPA開発Tips】Excel操作に強くなる 応用編
【RPA開発Tips】Excel操作に強くなる1 基礎編
【RPA開発Tips】ワイルドカードを活用しよう
【RPA開発Tips】いまさらだけれどWinActorフローティングライセンスとは?
【RPA開発Tips】いまさらだけれどWinActor Manager on Cloudとは?
【RPA開発Tips】ファイル操作に強くなる 後編
【RPA開発Tips】ファイル操作に強くなる 前編
【RPA開発Tips】エラーに強くなる(後編)
【RPA開発Tips】エラーに強くなる(前編)
SAP導入、悩むユーザー部門:「ゆるふわ要件定義」を防ぐ対策3点