Excelモダン 範囲を読み込みの範囲が正しく取得できない

いつもお世話になっております。

添付のようなExcelファイルにて、以下の処理を実現したいです。
(添付ファイルの中身は、実際に文字があるセルをすべて「DAMMY」で置換してあります。)
①「範囲を読み込み」でA列を対象に読み込み、データテーブルに格納する。
プロパティ指定値
・範囲 Excel.Sheet(“DAMMY”).Range(“A:A”)
・保存先 ExcelTable
②「データテーブルをExcelに書き込み」で、①で取得したA列最終行の次の行以降に書き込む。
プロパティ指定値
・ヘッダーを除外ON、追加ON
・書き込む内容 ResultTable
・ターゲット Excel.Sheet(“DAMMY”).Range(“A”&ExcelTable.Rows.Count+1)

※「最初/最後のデータ行を検索」では間に空白がある場合読み飛ばす設定をしないと正しい最終行が取得できなさそうだったので、上記の方法にしています。

想定では②で777行目から書き込みがされるはずですが、なぜか2075行目から書き込まれます。
正しく範囲を読み込む方法をご教授願います。

Studio 2021.10.9、UiPath.Excel.Activities 2.11.4使用です。

TEMP.xlsx (84.9 KB)

@kana612

  1. Looks like your excel cells are formatted till 2075 even if there is no data
  2. Instead of getting count like that …try with this ExcelTable.AsEnumerable.Where(function(x) Not IsNothing(x(0)) AndAlso String.IsNullOrEmpty(Not x(0).ToString)).Count

Cheers

行数は 3373 です
したがって、書き込みデータテーブルは 3374 行目から書き込みます。

私の説明が不十分でした。
添付したExcelは2075行目から書き込まれた後のもので、処理前には2075~2725行目(黄色部分)にデータはありません。
添付したExcelをそのまま使用したところで、なぜ行数が3373になるのかも分かりませんが・・・

話は少し逸れますが、Excelモダンをしようするとブレークポイントで止めても変数の状態が表示されないのですが、データテーブルの行数を表示できているのは何か方法があるのでしょうか?

イミディエイトパネルを使用できます

タイプ: Yourdatatable.RowCount

image

1 Like

ありがとうございます。
この方法だと、間の空白(例えば7~14行目)をカウントできないではないでしょうか?
間の空白を含めた最終行(下に何も入力がない最後の行)を取得したいです。

@kana612

Try this

myDataTable.Rows.IndexOf(myDataTable.AsEnumerable().LastOrDefault(function(x) Not IsNothing(x(0)) AndAlso String.IsNullOrEmpty(Not x(0).ToString))) + 1

Cheers

こんにちは

クラシックの列読み込みアクティビティを使って以下いかがでしょうか?算出された762とオフセット量の15を加算すれば777になると思います。

列を読み込みがブックを指定するアクティビティしか見当たらないのですが、
これは一旦Excelプロセススコープを抜けないと使用できないと思います。
Yoichiさんが使用していらっしゃるアクティビティはどこから使用できますか?

アクティビティパネルのフィルターでクラシックを表示をONにしてください。
列読み込みのアクティビティがあると思います。

このアクティビティはエクセルファイルを使用アクティビティの内部で使用できます。
(エクセルファイルを使用アクティビティで指定したファイルに対して操作します)

この方法で実現できそうです!ありがとうございます。
モダンのアクティビティが上手く動作しないのはバグでしょうか?

バグではなく仕様の差異ではないかと思います。
おそらく何らかの情報が777行目以降のセル内に残っているのではないかと思いますが、
それを取得するかあるいは取得しないかの差ではないかと思います。
モダンでも他のアクティビティあるいは何らかの設定でうまく動作するものがあるかもしれません。

A:A指定をするか、A15指定をするかの違いでは・・クラシックでA:A指定するとEXCELの最終行(1048576)まで読まれてしまいます。

1 Like

minamiさんのおっしゃる通り、A15を指定すればクラシックのアクティビティと同様に意図した範囲で取得できました!ありがとうございます。
ただ、とてつもなく動作が遅いので(書式をnullで実行しているから?他の設定は試していないです)、今回はクラシックの列を読み込みで対応しようと思います。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.