データテーブルの1行目をコレクション値のデータ型に格納する方法

いつもお世話になっております。
添付画像の通り、データテーブル型として保持しているデータの1行目を「dtTable.Rows(0).ToString」の式で取り出し、「List」という「System.Collections.Generic.IEnumerable」型の変数に格納し、繰り返し(コレクションの各要素) アクティビティにて「List」を読み込む処理を行いたいです。

image

しかし、「dtTable.Rows(0).ToString」の式で取り出し、「List」という変数に格納する箇所で、「'Interface IEnumerable(Of Out T)'の’Out’ジェネリックパラメーター’T’に対しては’Char’が’String’から派生する必要がありますが、派生していないため、'String’を’System.Collections.Generic.IEnumerable(Of String)'に変換することはできません。」といったエラーが発生してしまいました。
誤っている箇所のご指摘や、アドバイス等、ご教示いただけますでしょうか。

どうぞよろしくお願いいたします。

こんにちは

Listを初期化した上で「コレクションに追加」アクティビティを使って、要素を追加してみてください。

1 Like

こんにちは

すみません。訂正です。型がIEnumerable<String>なので、代入アクティビティで

List = List.Append(dtTable.Rows(0).ToString)

になるかと思います。

こんにちは!ご回答いただき、誠にありがとうございます。
ご教示いただいた方法にてエラーが解消し、ロボットを実行することができました。

しかし、ロボットを実行したところ、「値をNullにすることができません。」とのエラー表示がされ、原因が分からない状況です。
データテーブルの1行目には日付が入力されていて、Nullではないはずなのですが、なぜNullとなってしまうのか、原因等推測できましたら、ご教示いただけますでしょうか。

どうぞよろしくお願いいたします。

こんにちは

Listがnullなのではないでしょうか?インスタンス作成(初期化)していますでしょうか?

お世話になっております。
ご指摘ありがとうございます。
Listを初期化したところ、無事実行することができました。

度々の質問で大変申し訳ないのですが、、
続いて、エラーが発生したため「List」にちゃんとデータテーブルの1行目に値が格納されているかログにて確認したところ、下記の通り表示され、うまく値が格納されていないようでした。
何か原因お判りになりますでしょうか。

大変お手数ですが、ご確認どうぞよろしくお願いいたします。

こんにちは

IEnumerable<String>なので直接文字列として出力することはできません。

たとえば

List(0) や List.First()

のようにして、一つ目の要素を出力する。
あるいは

String.Join(vbCrLF,List)

のようにして、改行区切りですべて出力する

等が必要になります。

1 Like

早速ありがとうございます。大変助かっております。
List(0) にて1つ目の要素を出力したところ、「System.Data.DataRow」とログが出力されたのですが、これは何を指すのでしょうか、、

初歩的な質問で申し訳ございません。

こんにちは

ListにApeendしている中身は何を指定していますか?
そこが問題の可能性が高いと思います。

お世話になっております。
添付画像のExcel範囲C1:X8までをdtTableに格納し、その後1行目の日付をListに格納したいので、下記の通り「dtTable.Rows(0).ToString」をListにAppend?しています。
List.Append(dtTable.Rows(0).ToString)

image

こんにちは

今の状態は文字列ではなく、データ行を追加してしまっているので、このようになっています。
具体的に入力したい文字列は上記例ですと何になりますでしょうか?

お世話になっております。
なるほど、理解いたしました。
本来やりたいこととしては、繰り返し(コレクションの各要素)アクティビティにて、Excelの1行目(日付)を読み込み、当日の日付と一致すれば、該当セル(3行目)を取得する、という処理です。
そのため、具体的に入力(UiPathに読み込ませたい)したい文字列は、1行目の「日付」となります。
image

image

こんにちは

少し何か複雑なことになっているように思えますが、いまエクセルから読み込んだデータテーブルの
ヘッダはどのようになっていますでしょうか?
日付をヘッダにしているのではないということでしょうか?

お世話になっております。
データテーブルのヘッダ(1行目)は日付となっております。

こんにちは

そうであれば、以下で対象数量を出力できると思います。

img20210909-3

なおデータテーブル上での日付の書式が異なるケースがありますので、
yyyy/M/dの部分を調整いただく必要があるかもしれません。

1 Like

わざわざサンプルを作成いただき、大変ありがとうございます、、!
ご教示いただいた通りに作成したところ、メッセージボックスが表示されず、その後の処理である「件数読み込み」にて、「位置7に行がありません。」とセルがうまく取得できていないようなエラーメッセージが表示されました。

image

先ほど誤って3行目のセルを取得したいと記載してしまいましたが、取得したいセルは本日の日付に該当する列(K列)の8行目の、「13」です。
(K列8行目はdtTable.Rows(7).Item(strToday)で取得できる認識です。)

こんにちは
ReadRangeのすぐ後に、ログ出力かメッセージボックス等で

dt.Columns(4).ColumnName

を出力してもらって良いですか?
日付けフォーマットの調整が必要と思います。