Automation Anywhere(A360)でロボットを作ってみよう!-Excelの高度な操作でできること①

コラム / 読み物

本記事では、システムエグゼで使用しているAutomation Anywhere(以下、AA)の機能を紹介します。

今回はAAでできる、Excelファイルの操作についてご紹介します。

1.今回使用するExcelのアクション

AAには、Excelファイルを操作するためのアクションが複数ありますが、今回は以下7つのExcel操作アクションをご紹介します。

アクション名 機能 アイコン
Excelの高度な操作:
開く
Excelファイルを開く
Excelの高度な操作:
シートに切り替え
特定のシートを有効化できる
Excelの高度な操作:
シート数を読み取り
ブック内のワークシート数を取得できる
Excelの高度な操作:
ワークシート名を取得
ブックからワークシートの名前を取得できる
Excelの高度な操作:
ワークシートをデータテーブルとして取得
指定のワークシートからデータテーブルを作成できる
Excelの高度な操作:
1つのセルを取得
ワークシートの1つのセルの値を取得できる
Excelの高度な操作:
セルに移動
指定したセルに移動できる

高度なExcelアクションでは、xlsx、xls、xslb、xlsm、csv形式がサポートされています。
次章より、上記アクションの活用方法についてご紹介します。

2.AAを使ってExcelブックを開いてみよう!

初めに、AAを使用してExcelブックを開く方法をご紹介します。

まず、「Excelの高度な操作:開く」アクションで、開きたいExcelのファイルパスを指定します。
今回はあらかじめファイルパスを代入した文字列変数を指定します。

次に、セッション名を設定します。
これはRPAでExcelを操作する際に使われるセッションのため、Excelの高度な操作で同じファイルを操作する際には同じセッション名をアクション内に設定することで、複数のExcelファイルを開いている場合でも操作対象のファイルをRPAが認識できるようになります。
今回は「高度」と設定しました。

それでは実際にRPAを動かしてみましょう。
出来上がったコードは以下の通りです。

以下のようにExcelを自動で開くことできます。

3.特定のシートに移動しよう!

開いたExcelに複数のシートがあった場合、「Excelの高度な操作:シートに切り替え」アクションを使って、特定のシートへ移動することもできます。

「Excelの高度な操作:シートに切り替え」で、「シートの有効化に使用」の項目を任意のシートに設定します。
今回は「処理確認フラグ」というシートを有効化したいので、インデックスを「1」に設定しました。
シート名は直接名前で設定することも可能です。

こうすることで、Excelを操作する際に別のシートを読み取ってしまうことなく、特定のシートを有効化することができます。

4.特定のシートに移動しよう!(応用編)

応用編として、Excelの高度な操作を使った、特定のシートの有効化方法をもう一つご紹介します。

まず、「Excelの高度な操作:シート数を読み取り」アクションで、数字変数に結果を代入します。

次にループアクションを使い、反復子に先ほど取得したシート数の数字変数を設定します。

ループアクションの中に、「Excelの高度な操作:ワークシート名を取得」アクションを配置し、ワークシート名を文字列変数に代入します。

次にIF文を配置し、取得したワークシート名があらかじめ代入しておいた目当てのワークシート名の文字列変数と一致した場合、ループを中断する、と条件づけます。

次にループ内の「Excelの高度な操作:シートに切り替え」で、現在のループ数のインデックスのシートを有効化するように設定します。

最後に、一致するシート名を見つけてループを抜けた後のループ数をインデックスに指定し、「Excelの高度な操作:シートに切り替え」で目的のシートへ移動できるよう設定します。

出来上がったコードは以下の通りです。

こうすることで、複数シートがある場合でも誤ったシートを認識してしまうことなく、必ず特定のシートへ移動して操作を進めることができます。

5.ワークシートをデータテーブルとして取得してみよう!

シートを有効化したら、次に、シートに記載されている「処理確認フラグ」の表をデータテーブル変数として取得してみます。

「Excelの高度な操作:ワークシートをデータテーブルとして取得」アクションで、セッション名を設定し、「値を変数に代入」ではテーブル変数を選択します。
また、「シートにヘッダーを含む」にチェックを入れておくことで、テーブル変数にも表のヘッダーが反映されるようになります。

実際に動かしてみると、このようにテーブル変数に値が代入されます。

表のヘッダーもテーブル変数のヘッダーとして代入されました。

Excelの処理確認フラグをテーブル変数として取得できたら、ループアクションの反復子で「データテーブル テーブルの各行用」を選択し、先ほどのテーブル変数を設定します。
また、レコード変数を新しく作成し、設定します。

Excelから取得したテーブル変数の各行文のループ処理内に、「Excelの高度な操作:1つのセルを取得」アクションにてアクティブなセルを取得します。

「Excelの高度な操作:セルに移動」アクションで、1つ下のセルに移動し、処理確認フラグの最終行まで確認できるようにします。

出来上がったコードは以下の通りです。

IFアクションで取得したセルの値が「1」だった場合、メッセージボックスにて「処理対象です。」と出力できるようにしました。

このようにExcelから、RPAが処理対象フラグを取得できるように設定しておけば、RPA内に複数の処理があるものの、毎回すべての処理を行わなくてもよい場合、余計な処理をRPAが行わないようにできます。
稼働時間の短縮にもつながるとともに、RPAのコードを修正しなくても、Excelファイルの値を変更するだけでその時処理したい業務の判定ができます。

6.おわりに

今回ご紹介したのは一部ではありますが、AAの「Excelの高度な操作」アクションを用いれば、業務に欠かせないExcel作業を自動化し、業務の効率化につなげることができます。

RPA(Automation Anywhere)の導入をご検討の際は、システムエグゼまでお気軽にご相談ください。