はじめまして。2週間前にStudioXを使い始めたものです。
かなり初心者ですので基本的なところから教えていただけると幸いです。
Excelで最終行と最終列が可変のデータシートをコピペする際に、「範囲をコピー/貼り付け」の最終行を指定する方法を教えてください。
VBAマクロで、 Cells(Rows.Count, 1).End(xlUp).Rowに該当するような範囲選択をUipathで行うにはどうすればよいのでしょうか。
現状では「範囲をコピー/貼り付け」のソース範囲が下記のようになっているので、
Rangeの括弧内を変えて表の数字が入っている最終行と列を範囲指定するようにしたいです。
Book1.Sheet(“データ”).Range(“X1358:AX1389”)
拙い質問で恐縮ですが、宜しくお願い致します。
3 Likes
ryoko
(ryoko)
2
いらっしゃいませ、forumへようこそ! 
StudioXですと、「最初/最後のデータ行を検索」というジャストなアクティビティが存在します。

もし見当たらない場合、StudioXのバージョンを20.10以降、UiPath.Excel.Activitiesパッケージを2.9.3以降にしてみてください。
頑張ってくださいね 
3 Likes
お忙しい中有難うございました。
他サイトでは変数を指定して変える方法など紹介されていたので、StudioXではできないのかと思っておりました。
初心者ですが、頑張らせて頂きます。
2 Likes
ryoko
(ryoko)
4
説明不足な気がしたので追記です (`・ω・´)ゞ
StudioXで言う『保存された値』はいわゆる変数のことなので、「最初/最後のデータ行を検索」にて『最後の行の番号を保存』として保存した値は変数とも言えます。
で、『最後の行の番号を保存』で保存した値を「範囲をコピー/貼り付け」のソースに指定する時は、カスタム入力の「範囲」で、下記画像のように指定します。
トピックタイトルからすると最終列の取得方法もご希望かと思うのですが、
StudioXで最終列の列番号(AとかXとか)を取得する方法については私では力及ばずです。最終行取得方法だけで申し訳ない 
1 Like
Yoichi
(Yoichi)
5
こんにちは
表の最初の列のオフセット量がわかっていれば以下で算出できます。以下は仮にオフセット量が3(D列から始まる表)の場合です。
UiPath.Excel.Helpers.ExcelUtilities.ConvertColumnIndexToColumnLetter(3+ Excel.Sheet("Sheet1").DataTableValue.Columns.Count)
3 Likes
ryoko
(ryoko)
6
さすがYoichiさん!!
ありがとうございます!!
1 Like
お二人とも有難うございます。
Ryokoさんの説明で最終行は取得できそうです。
最終「列」に関してですが、Range(”X4:AX&LastRow”)のAXの部分に
Yoichiさんが紹介された式を代入すれば良いという認識であっていますでしょうか?

度々申し訳ありませんが、宜しくお願い致します。
ryoko
(ryoko)
8
範囲をコピー/貼付の詳細エディターに書き込む方法①と、一旦変数に格納する方法②があるかと思います。
なお、@Tatsuya899 さんが挙げられている例がX列開始だったのでオフセット23してみました。
①「範囲をコピー/貼付」の「ソース」詳細エディターに書き込む方法
Excel.Sheet(“Sheet1”).Range(String.Format(“X1:{0}{1}”,
String.Format(UiPath.Excel.Helpers.ExcelUtilities.ConvertColumnIndexToColumnLetter(23+Excel.Sheet(“Sheet1”).DataTableValue.Columns.Count)),
Saved.Values(Of System.Int32)(“最終行”).ToString))
②一旦変数に格納する方法
- 変数を作成
「後のために保存」アクティビティで、保存先を詳細エディターで文字列型に変更(Of UiPath.Excel.ExcelValue→Of stringに修正)し、保存する値の詳細コードに @Yoichi さんが教えてくれた書き方をべた張り(オフセット値だけ必要に応じ修正)

- 「範囲をコピー/貼付」の「ソース」カスタム入力で設定
最終行と同じ要領で、最終列を入れます。
どちらでも結果は同じです。
2 Likes
shinji
(Shinji Miyagi / みやぎ)
9
既に上記で解決済みだと思いますが、単純に「Excel の繰り返し (各行)」でやってみました。参考まで。
Main.xaml (14.2 KB)
2 Likes
ryokoさん
お忙しい中、有難う御座います。
②に方法で解決しました。
本当に有難う御座います。
1 Like
Shinji さん
ありがとうございます。
最終行、列の取得でもいろいろな手法があるんですね。
念のため確認ですが、右下最終セル名=Ctype(CurrentRow.FullRangeName)で合ってますか?社用PCでxamlファイルがダウンロードできなかったのでお手数お掛けしてすみません。
shinji
(Shinji Miyagi / みやぎ)
12
後のために保存 - 最終行の「:」以降の文字(例:C3)
・左辺(保存先)
右下最終セル名
・右辺(保存する値)
CType(CurrentRow.FullRangeName.Substring(CurrentRow.FullRangeName.IndexOf(":")+1), ExcelValue)
行(=CurrentRow.FullRangeName)を示す文字列(例えば:[Sheet1]!B2:F2)から、「:」より後ろ(=.IndexOf(“:”)+1)の文字列を切り出し(=Substring)ています。
例:[Sheet1]!B2:F2 → F2
1 Like
Mijas
14
すみません、こちらのキャプチャについてぜひ教えてください。
こちらのキャプチャをみさせていただき、このように作成したのですが、エラーになってしまいます。素人で恐縮ですが、どのように修正すればよいのか、教えていただけないでしょうか。
Yoichi
(Yoichi)
15
こんにちは
そのまま入力してもダメで、詳細エディタで上記で掲載のある下記画像の様に式を入力する必要があります。

Mijas
16
早速のコメントありがとうございます。
キャプチャにつけ忘れてしまったのですが、現状このようになっております。
LastRowではなく、AP10などと特定の場所を指定していた際はうまく動いていましたため、変数が原因なのかと思うのですが、直し方がわからず、ご教示いただきたいです。

Yoichi
(Yoichi)
17
こんにちは
LastRowが適切に設定されているとして
"A4:AP"&LastRow
ですね。すみません元の画像もあまりよくないですね。
1 Like
Mijas
18
コメントありがとうございます。
いただいた内容に変更して再実行したところ、無事動きました!
大変助かりました、ありがとうございます。