オートメーション道場

RPAツール「Automation 360」(旧Automation Anywhere A2019) の使い方についてまとめていきます。

ExcelとCSVの基本操作

ExcelとCSVの基本操作

業務でよくつかうのがExcelだと思いますが、RPAを使ってどのようにExcelと連携できるかについて見てみましょう。

目次

 

ExcelCSVを使ったよくあるシナリオ

Excelはご存じの通りテーブル形式のデータを保持できる万能ツールであり、企業の中では顧客情報や売り上げ情報をはじめとする様々な情報をシステム間でやり取りする際の中間ファイルとして使われていたり、場合によってはデータのマスタファイルとして使われていたりするでしょう。

Excelの利用用途

Excelの利用用途

このため、あるシステムからExcel形式でファイルを出力する、もしくはExcelから他のシステムにデータを書き込む、といった使われ方がRPAと連携する形では最も多いと想定されます。

CSVファイルExcelと同様のテーブル形式のデータを保持できますが、テキスト形式のためデータの値以外の書式情報は保持しませんが、Excelファイルより簡単にシステムが読み書きすることができます。

 

Excel/CSV連携で使うパッケージ

Automation Anywhere A2019では、Excelと連携するためのパッケージが3種類あります。加えてCSVと連携するパッケージがあります。

  • Excelの基本操作パッケージ
  • Excelの高度な操作パッケージ
  • Office 365 Excelパッケージ
  • CSV/TXTパッケージ

3種類のExcel関連パッケージ

Excel関連パッケージ1

Excel関連パッケージ1

Excel関連パッケージ2

Excel関連パッケージ2

Excelの基本操作パッケージ

特徴は「Excelがパソコンにインストールされていなくても動作する」です。約10種類のアクションが利用できます。Automation Anywhereが、Excelファイルを直接読み書きします。ただし読み書きできるのは、仕様がオープンになっているOpen XML形式の「.xlsx」のみです。

セル読み取り時の値はExcelで開いたときに表示される値ではなく内部で保持されている値になることに注意しましょう*1

Officeがインストールされていないパソコンでどうしても動作させる必要がある場合に便利です。

 

Excelの高度な操作パッケージ

特徴は「Excelを通してExcelファイルを操作する」です。約50種類のアクションが利用できます。Excelが読み書きできるファイル (.xlsx以外にも .xls、 .xlam、 .xltm、 .xltx、 .xlsm) は読み書きができますし、他にもExcelができる操作は様々なもの (書式変更、パスワード保護/シート保護などへの対応、ワークシートの操作、マクロの実行など) が実行できます。

通常はこちらのパッケージを使うことをお勧めします。基本操作パッケージと比べると、セル読み取り時のデータはExcelで表示される通りのものになります。

(A2019.16 (ビルド6439)以降では表示される通り (Read visible text in cell) か、内部の値 (Read cell value)かを選べるオプションがそれぞれのアクションにつきました。

セルの読み取りオプション

 

Office 365 Excelパッケージ

Office 365利用時にWeb版のExcelと連携します。約50種類のアクションが利用できます。

 

CSV/TXTパッケージ

CSVファイルの読み書きをするためのアクションが合計3種類あります。

 

データベースパッケージ

後はデータベースパッケージを使って接続文字列でExcelファイルに接続する方法もあります。

 

接続文字列 (Access Database Engine 2010 Redistributableのものを使う)

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=”C:\XXXX\XXXX.xlsx”;Extended Properties=”Excel 12.0 Xml;HDR=YES”

 

この方法は巨大なExcelファイルから高速にデータを取り出すのに優れています。

詳しくは以下の記事を参照してください。

autodojo.hatenablog.com

 

テーブル型変数、データテーブルとの連携

Automation AnywhereでExcel関係のデータを扱う際には、データをテーブル型変数に読み込んだり、データテーブルパッケージを使ったデータの加工操作をよく使うことになるでしょう。データ加工や変換に便利なアクションが準備されています。ExcelCSVの操作と一緒に使いましょう。

 

Excelでよく使う操作の逆引きをするには

尚、ExcelをAutomation Anywhereで扱うときによくあるシナリオと実装方法の詳細については、以下の記事を参照してください。

autodojo.hatenablog.com

 

例題: Excelからデータを読み込む

ここからは、連携シナリオとして一番基本的な、Excelファイルからデータを読む方法を「Excelの高度な操作」パッケージを使って実装してみます。

 

準備するExcelファイル

以下のような3行のデータを用意して例題を進めます。

Excel例題で使うデータ

 

考え方

Excelファイルを開いて、「複数のセルを取得」でデータが入っている表の部分をテーブル型変数に読み込むか、レコード型変数を使って一行ずつ読みだしていく、そしてこれらの中で特定のセルを読み出すというのが一番基本的なよく使う方法です。

ただし、今回はテーブル型変数に読み込んだ時点で要素の番号を直接指定してメッセージボックスに出力するという簡易的な方法を取ります。

考え方

 

Step 1. 新規ロボットを作成後、アクションパッケージの「Excelの高度な操作」の中から「開く」をフローに追加して、読み込むデスクトップファイルの場所を指定します。

Excel ボットを作成開始

Excel ボットを作成開始

また、「アクションの詳細」パネルの下の方に「シートにヘッダーを含む」オプションがあるのでこれをONにしておきます。

「シートにヘッダーを含む」をONにしておく

「シートにヘッダーを含む」をONにしておく

 

Step 2. 次に「複数のセルを取得」アクションを追加します。「対象とするセルの範囲」はデフォルトの通り「すべての行」にしておきます。こうすることで、実際に取得する範囲はデータがある範囲が自動的に判別されます。

そして、「値を変数に代入」で、テーブル型の変数を新規作成します。

複数のセルを取得アクションを挿入

複数のセルを取得アクションを挿入

Step 3. 変数名を入れて「作成して選択」ボタンをクリックします。

テーブル型変数の作成

テーブル型変数の作成

Step 4. メッセージボックスアクションを挿入します。「表示するメッセージ」の右側の「値を挿入」ボタンを押して、先ほどのテーブル型変数の要素を指定します。

メッセージボックスアクションの挿入

メッセージボックスアクションの挿入

Step 5. 「値を挿入」ダイアログボックスで、先ほどのテーブル型変数を選択します。

「値を挿入」ダイアログボックスでテーブル型変数を指定

「値を挿入」ダイアログボックスでテーブル型変数を指定

すると、テーブル型変数の場合は選択する要素を聞いてきます。インデックス番号と列名のいずれかで指定できます。ここではインデックス番号で指定することにします。要素としては (0,0) 、つまりデータの中で一番左上の "A2" セルに入っているデータを指定します。(ヘッダーは除かれます)

テーブル型変数の要素指定

テーブル型変数の要素指定

そして「はい、挿入します」ボタンを押します。

 

Step 6. フィールドに "$ExcelTable[0][0]$"という文字列が挿入されました。この書式がわかっていれば、今後はダイアログボックスを開かなくても直接この文字列を打ち込んでも指定可能です。最後に「保存」ボタンを押せば完成です。

テーブル型変数が入力された

テーブル型変数が入力された

実行してみる

さて、「▶実行」ボタンを押して実行してみましょう。

すると、Excelが起動してメッセージボックスが表示されます。A2セルの内容が表示されていれば成功です。

実行結果

実行結果

 

例題: CSVファイルからデータを読み込む

さきほどExcelで行ったことと同じことをCSVファイルでも行ってみましょう。

 

準備するCSVファイル

以下のようなデータをテキストファイルで用意して例題を進めます。

姓,名,会社名,メールアドレス,電話番号,ユーザ名,パスワード
佐藤,翔,四菱商事株式会社,sato@yotsubishi.com,03-****-****,sato,******
鈴木,綾香,角紅株式会社,suzuki@kadobeni.jp,04-****-****,suzu,******
田中,一郎,南日本鉄道,tanaka@minaminihon-railway.co.jp,06-****-****,tanaka,******

 

Step 1. 新規ロボットを作成後、アクションパッケージの「CSV/TXT」の中から「開く」をフローに追加して、読み込むデスクトップファイルの場所を指定します。「シートにヘッダーを含む」オプションがあるのでこれをONにしておきます。エンコードオプションが下の方にあります。デフォルトは「UTF-8」になっていますが、必要に応じて「ANSI」に変更してください。CSVファイルはANSI形式になっていることが多いです。

CSVファイルを開くアクションを追加

CSVファイルを開くアクションを追加

Step 2. 次に「既読」アクションを追加します。そして、「値を変数に代入」で、テーブル型の変数を新規作成します。

既読アクションを追加

既読アクションを追加

Step 3. 変数名を入れて「作成して選択」ボタンをクリックします。

テーブル型変数の作成

テーブル型変数の作成

Step 4. 「閉じる」アクションを挿入後、メッセージボックスアクションを挿入します。「表示するメッセージ」の右側の「値を挿入」ボタンを押して、先ほどのテーブル型変数の要素を指定します。

メッセージボックスアクションの挿入

メッセージボックスアクションの挿入

 

Step 5. 「値を挿入」ダイアログボックスで、先ほどのテーブル型変数を選択します。

「値を挿入」ダイアログボックスでテーブル型変数を指定

「値を挿入」ダイアログボックスでテーブル型変数を指定

すると、テーブル型変数の場合は選択する要素を聞いてきます。インデックス番号と列名のいずれかで指定できます。ここではインデックス番号で指定することにします。要素としては (0,0) 、つまりデータの中で一番左上の "A2" セルに入っているデータを指定します。(ヘッダーは除かれます)

テーブル型変数の要素指定

テーブル型変数の要素指定

そして「はい、挿入します」ボタンを押します。

 

Step 6. フィールドに "$ExcelTable[0][0]$"という文字列が挿入されました。この書式がわかっていれば、今後はダイアログボックスを開かなくても直接この文字列を打ち込んでも指定可能です。最後に「保存」ボタンを押せば完成です。

テーブル型変数が入力された

テーブル型変数が入力された

実行してみる

さて、「▶実行」ボタンを押して実行してみましょう。

すると、メッセージボックスが表示されます。文字が正しく表示されない場合は、「エンコード」オプションを変更してもう一度試してみてください。

実行結果

実行結果

 

 

 

オートメーション道場

 

*1:たとえば、日付データはシリアル値という整数が返ってきたり、整数で表示されているセルでも小数が返ってきたりする。