ExcelとCSVの基本操作
業務でよくつかうのがExcelだと思いますが、RPAを使ってどのようにExcelと連携できるかについて見てみましょう。
目次
- ExcelとCSVを使ったよくあるシナリオ
- Excel/CSV連携で使うパッケージ
- テーブル型変数、データテーブルとの連携
- Excelでよく使う操作の逆引きをするには
- 例題: Excelからデータを読み込む
- 例題: CSVファイルからデータを読み込む
ExcelとCSVを使ったよくあるシナリオ
Excelはご存じの通りテーブル形式のデータを保持できる万能ツールであり、企業の中では顧客情報や売り上げ情報をはじめとする様々な情報をシステム間でやり取りする際の中間ファイルとして使われていたり、場合によってはデータのマスタファイルとして使われていたりするでしょう。
このため、あるシステムからExcel形式でファイルを出力する、もしくはExcelから他のシステムにデータを書き込む、といった使われ方がRPAと連携する形では最も多いと想定されます。
CSVファイルはExcelと同様のテーブル形式のデータを保持できますが、テキスト形式のためデータの値以外の書式情報は保持しませんが、Excelファイルより簡単にシステムが読み書きすることができます。
Excel/CSV連携で使うパッケージ
Automation Anywhere A2019では、Excelと連携するためのパッケージが3種類あります。加えてCSVと連携するパッケージがあります。
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ファイルから高速にデータを取り出すのに優れています。
詳しくは以下の記事を参照してください。
テーブル型変数、データテーブルとの連携
Automation AnywhereでExcel関係のデータを扱う際には、データをテーブル型変数に読み込んだり、データテーブルパッケージを使ったデータの加工操作をよく使うことになるでしょう。データ加工や変換に便利なアクションが準備されています。ExcelやCSVの操作と一緒に使いましょう。
Excelでよく使う操作の逆引きをするには
尚、ExcelをAutomation Anywhereで扱うときによくあるシナリオと実装方法の詳細については、以下の記事を参照してください。
例題: Excelからデータを読み込む
ここからは、連携シナリオとして一番基本的な、Excelファイルからデータを読む方法を「Excelの高度な操作」パッケージを使って実装してみます。
準備するExcelファイル
以下のような3行のデータを用意して例題を進めます。
考え方
Excelファイルを開いて、「複数のセルを取得」でデータが入っている表の部分をテーブル型変数に読み込むか、レコード型変数を使って一行ずつ読みだしていく、そしてこれらの中で特定のセルを読み出すというのが一番基本的なよく使う方法です。
ただし、今回はテーブル型変数に読み込んだ時点で要素の番号を直接指定してメッセージボックスに出力するという簡易的な方法を取ります。
Step 1. 新規ロボットを作成後、アクションパッケージの「Excelの高度な操作」の中から「開く」をフローに追加して、読み込むデスクトップファイルの場所を指定します。
また、「アクションの詳細」パネルの下の方に「シートにヘッダーを含む」オプションがあるのでこれを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形式になっていることが多いです。
Step 2. 次に「既読」アクションを追加します。そして、「値を変数に代入」で、テーブル型の変数を新規作成します。
Step 3. 変数名を入れて「作成して選択」ボタンをクリックします。
Step 4. 「閉じる」アクションを挿入後、メッセージボックスアクションを挿入します。「表示するメッセージ」の右側の「値を挿入」ボタンを押して、先ほどのテーブル型変数の要素を指定します。
Step 5. 「値を挿入」ダイアログボックスで、先ほどのテーブル型変数を選択します。
すると、テーブル型変数の場合は選択する要素を聞いてきます。インデックス番号と列名のいずれかで指定できます。ここではインデックス番号で指定することにします。要素としては (0,0) 、つまりデータの中で一番左上の "A2" セルに入っているデータを指定します。(ヘッダーは除かれます)
そして「はい、挿入します」ボタンを押します。
Step 6. フィールドに "$ExcelTable[0][0]$"という文字列が挿入されました。この書式がわかっていれば、今後はダイアログボックスを開かなくても直接この文字列を打ち込んでも指定可能です。最後に「保存」ボタンを押せば完成です。
実行してみる
さて、「▶実行」ボタンを押して実行してみましょう。
すると、メッセージボックスが表示されます。文字が正しく表示されない場合は、「エンコード」オプションを変更してもう一度試してみてください。
*1:たとえば、日付データはシリアル値という整数が返ってきたり、整数で表示されているセルでも小数が返ってきたりする。