WinActor
前回の応用編では、要件に合わせて処理の範囲や項目の位置を動的に設定する方法のなかでも、とくに利用頻度の高い「まとめて範囲を指定する」「指定行から1件ずつ最終行まで処理を繰り返す」「検索結果を取得する(1件のみ)」の3つのやり方を紹介しました。
今回は、テクニック編として「Excel関数とRPA処理の組み合わせ」「Excel操作の汎用化」の2つの方法を紹介します。この方法をマスターし、前回の応用編と組み合わせることで、Excelを使ったシナリオ作成の処理スピード向上やシナリオ開発工数の削減をめざしましょう!
まずは、Excel関数を利用した処理の高速化について解説します。これには3つの実装手順があります。
これらを実装することで、大幅な処理スピードの向上が見込めます。例えば、下のキャプチャ画像左側のように1行ずつ処理を行っていると非常に処理時間が掛かってしまいますが、キャプチャ画像右側のようにExcel関数と組み合わせることで、一瞬で処理を完了させることができます。
まずは、範囲を作成する方法を説明します。
一括で処理するためには、範囲を作成する方法が必須になります。
WinActorでExcel関数を2行目に書き込み、書き込んだ関数をコピーして最終行まで選択した状態で貼り付けます。
そのためにはまず「貼り付け範囲」をWinActorで作成する必要があります。
WinActorのプロパティ画面で指定するExcelの「範囲」には、「開始セル」と「終了セル」を指定するタイプと、「範囲」そのものを指定するタイプがあります。使いたい部品の範囲指定がどちらのタイプかを先に確認しましょう。
まず、Excelの最終行を取得し、各行と「文字列の連結」を組み合わせて処理に必要なセルの位置情報(A1形式)を作成します。セルの貼り付け開始位置(A1形式)と終了位置(A1形式)を作成したら、コロン(:)を連結して「範囲」を作成します。
(1)で範囲の作成を行えるようになると、関数を設定してコピーした後、範囲を指定して貼り付けすることができるようになります。
Excel関数を貼り付け開始位置に書き込んだ後、書き込んだExcel関数を一度コピーします。
貼り付け開始位置のExcel関数をコピーしたら、先に作成した範囲(先頭行~終了行)に対して貼り付けを行います。
手動でExcelの範囲貼り付けを行う操作手順と同じ手順をRPAで設定します。
(2)で貼り付けた関数はそのままだと後続処理に利用しづらい場合があります。
その場合は、再度貼り付けた範囲をコピーして値のみペーストすることで上書きできます。
Excel関数を貼り付けたままだと、Excel関数自体がそのままファイル上に残ってしまいます。
Excel関数が残っていると、関数の種類によっては次回ファイルを開いた際に正しく動作しない可能性があるため、必要であれば「範囲コピー」→「値のみペースト」でデータを上書きしてExcel関数をファイルから削除します。
すでに作成している「範囲」や「セル位置」に変更はないため、そのまま作成した範囲を再利用します。
このように、Excel関数と範囲選択を組み合わせることで一括の処理を実現することができます。
次は、Excel操作の汎用化について解説します。
これには3つの実装手順があります。
これらを実装することで、開発工数の削減が見込めます。例えば、下のキャプチャ画像左側のようにサブルーチンと呼ばれる処理をまとめる機能を使わずにシナリオを開発しようとすると、同じような処理を何度も開発する手間が掛かってしまいます。しかし、キャプチャ画像右側のようにサブルーチンを利用することで、同じ処理をサブルーチン一つで開発することができ、工数の削減やシナリオのスリム化による可読性の向上を実現できます。
処理をサブルーチン化する前の準備について解説します。
固定値を使っている箇所については、サブルーチンを利用する際にエラーの原因になりますので、変数に置き換えていきます。
サブルーチン化(処理の共通化)をする際に、処理ごとに違いがある値をすべて変数で指定する必要があります。
そのため、すでに固定値(値⇒)で設定している個所に対して、別の列や値で使うことを想定した時の影響の有無を確認し、影響がある項目ならすべて「固定値」を「変数」に置き換えます。
(1)で事前の準備を行った後は、サブルーチングループを作成していきます。
固定値(値⇒)を変数に置き換えた後、メイン処理からサブルーチングループに一連の処理を移動させます。
サブルーチングループのプロパティで、メイン処理から呼ばれた際に値を受け取りたいローカル変数を追加します。
サブルーチングループをシナリオ上に配置して、既存の処理を移動させた後、変数の設定を行います。
(2)でサブルーチングループの作成と処理の移動ができたら、実際にサブルーチンを呼び出して利用します。
「サブルーチン呼び出し」を置いたら、プロパティ画面で呼び出したいサブルーチングループを選択します。
「同期」ボタンを押すとサブルーチングループ側で設定した「ローカル変数」を項目として入力できます。
サブルーチン呼び出しで変数(引数)を指定することで指定された値で実行できます。
このようにすることで、同じような処理をサブルーチンでまとめ開発工数の削減やシナリオのスリム化を実現することができます。
いかがでしたでしょうか?
前回の応用編と今回のテクニック編を使うことで、Excelを使ったシナリオの理解が深まったかと思います。WinActorのExcel関連のライブラリは数が非常に多いですが、設定のポイントさえ覚えてしまえば、どのライブラリも簡単に使いこなせると思います。WinActorで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点