Excel最終行の取得方法 (RPA)初心者

いつもお世話になっております。
Excel最終行の取得について、少しばかり混乱してしまったためご教示いただきたいです。

理想の形としまして、
rc(変数) = wb(ファイルパス変数).worksheets(“シート名”).cells(4,8).end(-4121).row
上記はVBAの記述式で最終行を取得しておりますが、Uipathでも同様に行いたいと考えております。
どのアクティビティを使用すれば上記のような形になりますでしょうか。

また、cells(4,8)を起点とし、Offsetで移動させて空白に値を入力する方法もご教示頂けたら幸いです。
※入力する値は変数で格納してあります。

以上、よろしくお願いいたします。

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

UIPATHで最終行番号を取得方法は以下の手順をやってみてください。
① 「範囲を読み込む」アクティビティを利用し、プロパティの設定:
範囲:「”D8”」
ヘッダーの追加: チェックする
出力:dtbResult

② 取得したデータテーブルの行数をカウントしましょう。最終行は「dtbResult.Rows.Count + 2」です。

よろしくお願いいたします!

こうなると、「セルの読み込み」で1セルずつ取得するのではなく、「範囲の読み込み」で、DataTable型として扱った方が楽ですね。

例えば、"A1"を基点としたDataTableで、
”H4"セル相当は、DataTableRows(3).Item(7)になります。
行番号、列番号で参照できるので、Offset的な動きが出来ます。

但し、このDataTable中の値を変更しただけでは、シートの同位置のものは更新されません。「範囲を書き込み」辺りで上書きする必要があります

Excelのシートの先頭行は1なのですが、DataTableの先頭行は0なので、+1したり、+2したりしています。+1、+2の差は、先頭行をDataTableの列として利用するかしないかの違いになります。

代入で値をいれ、書き込みアクティビティでDataTableをシートに書き戻す感じですね。ですので、参照するのにはDataTableを利用したいけど、値を直接シート上のセルに書き戻したい!って場合は、DataTableの行(0から始まる)と、列(これも0から始まる)のを、A1系式に変換し、「セルの書き込み」で書き戻す必要があります。

例えば、DataTableの行が0で、列が1だとしたら、"B1"セルあるいは、”B2"になりますね。

一箇所でしたら、「セルを書き込み」で十分ですね。A1形式で該当セルを指定して。

Rowsは上下方向になります。Columnsのような左右方向は、Itemになります。ここがExcelのRange的な考えとDataTableの考えの違いですね。

行の順次処理に関しては、「繰り返し(行単位」」を使います。For Each で、受け手がDataRow型となります。

※ちょっと使い慣れたFor Ix = 0 To nとは違うので、最初違和感ありましたが、これも結構いいものです(^。^)

最終行のH列のセルに追記していくのでしたら、
書き込みアクティビティの「範囲」に「“H” & rc.ToString」でいけます!

繰り返しアクティビティでは、配列的な変数を指定して、それを一つ一つ処理するものです。ですので、DataTable01.Rows.Count+2は整数型なので、NGです。設定するとしたら、DataTable01だけですね。

繰り返しアクティビティには、現在のインデックスと言う設定があって、ここには配列的な変数の何番目を処理しているかの情報が入ります。ですのでInt32の例えばixと指定します。

合わせると、

書き込みアクティビティの「範囲」に「“H” & (rc + ix).ToString」でいけます!(多少のズレは±してくださいませ)

セルに書き込みの範囲指定が、A1形式ではなく、ただの数字になっちゃっていますねo

で、ございます!

image

image

んー。こればっかりは、「DataTable01」の件数を確認してくださいとしか…

範囲を読み込みで、‘A:A‘とやると、シートの全行を読み込むので、注意が必要です

「繰り返し(行単位)」アクティビティの中に「Break」アクティビティ(和名失念)をいれると、そこでブレークできます。

あと、範囲を読み込みで、「”シート名”」「”H4”」指定だと、H4セルから、EXCELシート上の最終セルまで読み込みます。それが原因だとすると、「Break」アクティビティで制御する方が理解しやすいかもしれませんね。

Hi @r-chinen,

To get the last row of excel, you can use the activity called “Find Last Row”.

Here is the video presentation…

Thank you
Balamurugan.S

代入アクティビティとか、条件分岐とかで使用できます。

DataTableRows(3).Item(7)のような指定から、EXCELのセルとかは参照できません。Rowsは"A1"形式での行になるのでそのまま使用できますが、Itemは、"A1"形式での”A"に相当するので、数値から列英字に変換する必要があります。

Itemを列数字に変換するのにもなにか手順はいります。
例えば、{“”,“A”,“B”,“C”…}のような配列で参照する方法、数値から計算によって列英字にする方法などがあります。
ある程度の範囲が決まっているのでしたら配列で参照する方法がお手軽ですし、列の数が不定の場合は、数値から計算による方法になると思います。

※数値から計算する方法は、Microsoftのサイトで紹介されていたけど、失念(^・^)

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