RPAツールのAutomation Anywhere A2019では、Excelファイルを操作するためのパッケージは3種類存在します。その中で、ローカルPCのファイルを操作できるパッケージは**「Excelの基本操作」および「Excelの高度な操作」**です。前者はExcelがインストールされていなくてもファイルを直接読み書きするパッケージ、後者はExcelを使って操作するためのパッケージです。通常はExcelがインストールされているので後者を使うのがお勧めです。ちなみに、前者と後者で同じ名前のアクションがいくつかありますが、動作が違うものがあるので注意が必要です。この記事では一番ハマりそうな「セルを取得」関係のアクションでセルの値を読んだ時の値の違いについて解説します。
環境
- Automation Anywhere Enterprise A2019.13 (ビルド4705)
(後述の通り、2020年9月中旬に登場したA2019.16 (ビルド6439) 以降は、Excelの高度な操作で新しいオプションが登場して、動作を選べるようになりました)
参考記事
- 【Automation Anywhere A2019】 3種類のExcelパッケージの違い+Data Table
- Automation Anywhere A2019でExcel操作をする
- Automation Anywhere A2019 変数型「日時 (Datetime)」に関するTips
現象: Excel上で表示されている内容と違う値が取得される...
以下のようなExcelファイルを用意します。
A1: 数値で3.141592 (表示上は "3")
A2: 日付で2020/5/1
A3: 通貨で100.05 (表示上は "$100")
これはよくあるタイプのファイルですね。値として何が入っているかはセルをダブルクリックするか、アクティブなセルにして数式バーを見ると、書式なしの値が表示されます。
このファイルに対して、以下のような2種類のBotで読み込みと表示を行います。それぞれ「Excelの基本操作」「Excelの高度な操作」を使ってExcelファイルを開き、特定のセル (A1) を読み込み文字列変数に保存、それをメッセージボックスで表示します。
A1 (数値で3.141592 (表示上は "3"))を読み込ませた結果
「Excelの基本操作」では値そのもの、「Excelの高度な操作」では書式設定を通して表示されている文字列が取得されていることがわかります。
A2 (日付で2020/5/1)を読み込ませた結果
「Excelの基本操作」では整数が返ってきています。これは**「シリアル値」**と呼ばれるもので、Excelでも日付は内部では整数として格納されており、書式設定を通して日付形式で表示されます。日付のシリアル値については数式バーやセルのダブルクリックでも表示されません。(書式を数値に変更すると表示されます。)
※ Excelのシリアル値を日時型変数に正しく格納するためにはBot Storeで配布されている**「日時 (日本)」**パッケージを使います。詳しい使い方はこちらの記事を参照してください。
A3 (通貨で100.05 (表示上は "$100"))を読み込ませた結果
これもA1と同様、「Excelの基本操作」では値そのもの、「Excelの高度な操作」では書式設定を通して表示されている文字列が取得されていることがわかります。値としては通貨記号も持っていないことになります。
A2019.16 (ビルド6439)以降の動作
「Excelの高度な操作」では、新しいオプションが追加され、セルに表示されている書式の文字列をそのまま取り出す (元々の高度な操作の動き) のか、セルに保持されている内部の値を抜き出す (基本操作の動き)のかを選べるようになりました。
まとめ
このように、「Excelの基本操作」と「Excelの高度な操作」では、同じ「セルを取得」アクションを使っても得られる値が異なることがわかりました。これはUiPathでも同様にハマりポイントの1つになっているため、注意しましょう。