Edited at

【UiPath】「セルを読み込む」アクティビティについて

「Excelのセルのサマった値(SUM)が取れない!!」という事案が発生し、

「そんなバカな。。。!!」と思い、調べた備忘録です。

結論、関数値でも書式がユーザー定義のセルでも値は取れるようです。


「セルを読み込む」アクティビティは2つある

日本語版のUiPathでは「セルを読み込む」と訳されているアクティビティは2つあります。

僕はこのトラップに見事に引っ掛かりましたw

image.png

青枠の「セルを読み込む」はRead Cell

赤枠の「セルを読み込む」はExcel Read Cell

です。


Read Cellのプロパティ

image.png


Excel Read Cellのプロパティ

image.png


Read CellとExcel Read Cellの違い

Read Cellはそれ自身がExcelファイルを指定できるようになっており、単独で使えますが、Excel Read CellはExcel application scopeの中で使うことが前提となっています。

他にもオプションが多少異なり、Read Cellには「パスワード」がありますが、Excel Read Cellにはありません。

問題なのは、「表示形式を保持」オプションの返却値が異なるという点です。

試しに、以下のサンプルに話を進めることにします。

A1~A5セルは、それぞれユーザー定義[h]: mm:ssが設定されており、A6セルで=SUM(A1:A5)として合計時間を算出しています。

今回はA6セルの値を取得してみます。

image.png

image.png


Read Cellの場合

image.png

「表示形式を保持」オプションをオンにして、結果を変数result(型はGenericValue)に入れるものとします。resultをメッセージボックスに表示させてみます。

image.png

セルに表示された合計時間とは異なる値が取得できてしまいました。

この値の正体は、セル書式を「標準」とした場合の表示値です。

ユーザー定義されたセル値は取得できるようなのですが、

関数値になるとセル書式が「標準」の場合の値を取得してしまうようです。

image.png


Excel Read Cellの場合

image.png

Read Cellと同様にやってみます。

image.png

結果、きちんとセルに表示されている合計時間が取得できています。


まとめ

関数値の取得はExcel Read Cellを使いましょう。

Read Cell以外にも同じ日本語訳がされているアクティビティがあり混同しがちなので、Excel操作系のアクティビティは「アプリの統合」→「Excel」直下に置かれたアクティビティを使うのが無難と思われます。