kana612
(果奈)
July 20, 2023, 5:16am
1
いつもお世話になっております。
添付のような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)
Vikas_M
(Vikas M)
July 20, 2023, 5:32am
3
行数は 3373 です
したがって、書き込みデータテーブルは 3374 行目から書き込みます。
kana612
(果奈)
July 20, 2023, 5:36am
4
私の説明が不十分でした。
添付したExcelは2075行目から書き込まれた後のもので、処理前には2075~2725行目(黄色部分)にデータはありません。
添付したExcelをそのまま使用したところで、なぜ行数が3373になるのかも分かりませんが・・・
話は少し逸れますが、Excelモダンをしようするとブレークポイントで止めても変数の状態が表示されないのですが、データテーブルの行数を表示できているのは何か方法があるのでしょうか?
Vikas_M
(Vikas M)
July 20, 2023, 5:42am
5
イミディエイトパネルを使用できます
タイプ: Yourdatatable.RowCount
kana612
(果奈)
July 20, 2023, 5:45am
6
ありがとうございます。
この方法だと、間の空白(例えば7~14行目)をカウントできないではないでしょうか?
間の空白を含めた最終行(下に何も入力がない最後の行)を取得したいです。
Anil_G
(Anil Gorthi)
July 20, 2023, 5:54am
7
@kana612
Try this
myDataTable.Rows.IndexOf(myDataTable.AsEnumerable().LastOrDefault(function(x) Not IsNothing(x(0)) AndAlso String.IsNullOrEmpty(Not x(0).ToString))) + 1
Cheers
Yoichi
(Yoichi)
July 20, 2023, 6:01am
8
こんにちは
クラシックの列読み込みアクティビティを使って以下いかがでしょうか?算出された762とオフセット量の15を加算すれば777になると思います。
kana612
(果奈)
July 20, 2023, 6:20am
10
列を読み込みがブックを指定するアクティビティしか見当たらないのですが、
これは一旦Excelプロセススコープを抜けないと使用できないと思います。
Yoichiさんが使用していらっしゃるアクティビティはどこから使用できますか?
Yoichi
(Yoichi)
July 20, 2023, 6:24am
11
アクティビティパネルのフィルターでクラシックを表示をONにしてください。
列読み込みのアクティビティがあると思います。
このアクティビティはエクセルファイルを使用アクティビティの内部で使用できます。
(エクセルファイルを使用アクティビティで指定したファイルに対して操作します)
kana612
(果奈)
July 20, 2023, 6:41am
12
この方法で実現できそうです!ありがとうございます。
モダンのアクティビティが上手く動作しないのはバグでしょうか?
Yoichi
(Yoichi)
July 20, 2023, 6:44am
13
バグではなく仕様の差異ではないかと思います。
おそらく何らかの情報が777行目以降のセル内に残っているのではないかと思いますが、
それを取得するかあるいは取得しないかの差ではないかと思います。
モダンでも他のアクティビティあるいは何らかの設定でうまく動作するものがあるかもしれません。
minami
July 20, 2023, 6:46am
14
A:A指定をするか、A15指定をするかの違いでは・・クラシックでA:A指定するとEXCELの最終行(1048576)まで読まれてしまいます。
kana612
(果奈)
July 20, 2023, 8:45am
15
minamiさんのおっしゃる通り、A15を指定すればクラシックのアクティビティと同様に意図した範囲で取得できました!ありがとうございます。
ただ、とてつもなく動作が遅いので(書式をnullで実行しているから?他の設定は試していないです)、今回はクラシックの列を読み込みで対応しようと思います。