1. Quiz

さっそくですが、クイズです。下図フローの実行結果を考えてみましょう。
制限時間は1分です。

クイズ フロー実行

※「strA1Val」はString型の変数です。

「strA1Val」はString型の変数

 

答えを確認していきましょう。
下図のように、「テスト」という文言が表示されたメッセージボックスが出現する、が実行結果となります。

「テスト」という文言が表示されたメッセージボックスが出現する

簡単ですね。

処理の流れをみていきます。

「UiPathExcel検証.xlsx」というExcelファイルを開き、「検証」シート上「A1」セルの値を取得します。
その後、取得した値を文字列型変数の「strA1Val」に格納し、「strA1Val」をメッセージボックス上に表示しているため上記のような実行結果となります。

 

それでは第2問です
同様に1分間考えてみましょう。

クイズ2 実行フロー

※「strA1Val」はString型の変数です。

「strA1Val」はString型の変数

 

答えを確認していきましょう。

「1000」というメッセージボックスが表示される、、、ではなく
Double型からString型への変換ができない旨のエラーが発生する、が正解です。

Excel上の該当セルの書式は文字列(=String)に設定されているのにもかかわらず下記エラーが発生するため、UiPath初学者がつまずきそうなポイントですね。

■エラーメッセージ
セルを読み込み: StringConverter を System.Double から変換できません。

本事象はUiPath側のアクティビティの内部仕様によるもののため、具体的なロジックは不明ですが、「セルを読み込み(ExelReadCell)」アクティビティで数値を記載したセル(該当セルの書式は不問)を読みとった場合、UiPath側としては数値(Double型)として認識・取得されるようです。

■補足
UiPath側の設定は変えずに書式を文字列に指定した日付を取得した場合は、正常に文字列としての取得が可能です。

UiPath側の設定は変えずに書式を文字列に指定した日付を取得した場合は、正常に文字列としての取得が可能

※「strA1Val」はString型の変数です。

「strA1Val」はString型の変数

2. エラー「セルを読み込み: StringConverter を System.Double から変換できません。」への対策3選

以下いずれかの手順を実施することで、上記エラーを回避することが可能です。

①「セルを読み込み(ExelReadCell)」アクティビティの「表示形式を保持」プロパティをONにする

「セルを読み込み(ExelReadCell)」アクティビティの「表示形式を保持」プロパティをONにする

 

②「セルを読み込み(ExelReadCell)」アクティビティで取得した値をGenericeValue型変数に格納する

「セルを読み込み(ExelReadCell)」アクティビティで取得した値をGenericeValue型変数に格納する

※GenericeValue型変数に格納された値を文字列として取り出す際は、「変数名.ToString」を用います

 

③「セルを読み込み(ExelReadCell)」アクティビティで取得した値をObject型変数に格納する

「セルを読み込み(ExelReadCell)」アクティビティで取得した値をObject型変数に格納する

※Object型変数に格納された値を文字列として取り出す際は、「変数名.ToString」を用います

3. 参考

・「セルを読み込み(ExelReadCell)」アクティビティ:
https://docs.uipath.com/ja/activities/other/latest/productivity/excel-read-cell

・Object型:
https://docs.uipath.com/ja/studio/standalone/2022.10/user-guide/managing-variables#variable-type

・GenericValue型:
https://docs.uipath.com/ja/studio/standalone/2024.10/user-guide/uipath-proprietary-variables#genericvalue-variables

・.ToStringメソッド
https://learn.microsoft.com/ja-jp/dotnet/api/system.object.tostring?view=net-8.0