エクセルの値を変数に格納後、次の行の変数を格納したい

1ユーザの情報(1行目)の各セルの情報を変数で格納し、
その値を利用して処理して1ユーザ分の処理が完了した後、
次のユーザ情報(2行目)も同じように処理し、
データが無くなるまでそれを繰り返す、というのは可能なのでしょうか。
データイメージを添付します。Book1.xlsx (13.0 KB)

1行分やる毎に読み取るセルが一つずれ、
且つユーザ数も一定ではない為、難しいのかなと思い質問させて頂きました。
不躾な質問で申し訳ございませんが、お力添えを頂けると幸いです。
※1行目、2行目…と処理し、処理するユーザがいなくなったら終わり、
というDo While や For activity を使っていくつもりですが、こちらは勉強中です…

以上、何卒宜しくお願い致します。

言葉で説明すると長くなるので作っちゃいました。

やっていること
1)ReadRangeでB5から空白までの長さを取得(Datatable型)

2)counterを定義(B5から読む設定なので5にしています)

3)For each rowアクティビティでその分だけ以下の処理を回す

4)セル内容をB + counterから読み込んで出力をresultとする

5)セルを変えたいので、counterを1増やす(これで次のcounterはB6(counter初期値5 + 1)になる)

6)確認用にmessage boxを使ってresultをメッセージボックスに出す

resultを使ったりセルを移動させたりしてあとはお好きな処理をどうぞ。
動作確認はしていますが、何かありましたらご返信ください。

ちなみにですが、プログラムは順次、分岐、反復の三つで成り立っています。
これらを意識してみるといいと思います。
頑張ってくださいね。Main.xaml (9.3 KB)

1 Like

データが無くなるまでそれを繰り返す、というのは可能なのでしょうか。

可能です。
For each rowアクティビティを使ってください。

処理の内容にもよりますがカウンターを使用しなくても問題ありません。
(行の数だけ繰り返してくれます。)

mths様

毎度毎度ご回答くださいまして誠にありがとうございます!
プログラミングの根幹についても念頭に入れておきます!

アップロードいただいたファイルですが、
2番以降のフローが添付エラーの影響で表示されませんが、
これはダウンロード側の問題でしょうか。
エラー画面.xlsx (80.6 KB)

大変おこがましくて恐縮なのですが、1~6の動き自体はイメージしていますが、もう一度アップロードいただけませんでしょうか…。

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

Yashiki_takajin様

For each rowアクティビティを使えることを考えておらず、
If等で考えてしまいました…。
For each row について色々調べてみると、
様々な条件に対応できることが見えてきました!
ご教示頂き、ありがとうございます。

以上、取り急ぎのお礼まで。

excelファイルを拝見いたしましたところ、下記にあるCould not find~部分はバージョンの違いや必要なパッケージが足りない可能性があります。

キャプチャ画像をまとめましたのでこちらをご参照ください。
また何かありましたらご連絡を。screenshots.xlsx (54.4 KB)

mths様
ご連絡が遅くなりすみません。
いつもいつもありがとうございます!
当方は今トライアルバージョンを利用している影響かもしれません。
近々製品版をインストール予定ですので、その後に確認します。

わざわざキャプチャまでいただき本当に助かります!
変数の理解が相変わらず追いついていませんが、
どのタスクがどういう働きをしているか、どの設定を変えるとどう動くか、
というのは検証していく上でなんとなくわかってきました!
ご教示頂いた内容に応用を加え、本来実施したいフローを作成していきたいと思います!
分岐を作りたかったのですが、Flow Decisinoが使えないのでIFで対処していますが今のところ問題なさそうですので、頑張ってみます!
ありがとうございました!

一先ず取り急ぎのお礼とさせてください!

mths様

先日ご回答くださいましてありがとうございます。
お時間がありましたら更問にご回答頂けると幸甚でございます。

今回頂いたヒントで『セルB5の情報』を取得して次の『セルB6の情報』を取得、
というのは可能となりました。
これを『B5~G5の情報』を取得して次のセル『B6~G6の情報』を取得、とする場合、
どのようにすれば実施可能でしょうか…。
“B” + counter + “:G” counter とすれば指定はできそうですが、
For each でどのように設定すべきかわかりませんでした。

以上、何卒よろしくお願い申し上げます。

横から失礼します。
mths様が作っていた内容を少し変えて『B5~G5の情報』を取得して次のセル『B6~G6の情報』取得に関して行えるようにしましたので、
添付資料の方を確認してみてください。
スクショ.zip (116.0 KB)

1 Like

kei-kappa_564様

毎度毎度ご助力いただきありがとうございます!!
頂きましたスクショにて作成することができました。
データのある3行分Write Lineで書き出されました!
すみません。更問をさせてください…。
①代入のタスクの OutDataTable.Split(","c) の最後のc にはどういった意味が込められているのでしょうか。

②一行分のレコード(B5~G5)を取得できましたが、
このE6の値のみをテキストボックスに入力したい、としたい場合、
やはり頂いたやり方ではなく、一つのセルずつFor each row を設定するしかないのでしょうか。

図々しく申し訳ございません!
お時間がある時にご回答いただけますと幸いです。
何卒、宜しくお願い致します。

①に関しては下記URLに同じような問いがあったので載せておきます。

➁に関してですがB5~G5を取得しているfor eachアクティビティ実行中の時にE6に書き込みを行いたいということでしょうか?

kei-kappa_564様

いつもお世話になっております。
①についてのフォーラムの掲載、ありがとうございます!
なるほど、セルとかではなく変数タイプで必要な形であり、
C(Character) 以外にもあり、その場合は変動するということなんですね…。

②について説明不十分且つ誤りがあり大変申し訳ございません。
誤)このE6の値のみを…
正)このE5の値のみを…

変数に格納したい値としては「B5~G5」なのですが、
処理する上でこの中のE5の変数をテキストボックスに入力したい、という場合、
どのように設定すべきかわからなかったのでお尋ねさせて頂きました。

一つずつ処理する場合、例えばE5を読み、変数として格納し、その変数をあるテキストボックスへ入力、
というやり方はわかるのですが…。

当方の知識不足且つ事前の情報共有ができていないことでご迷惑をお掛けして申し訳ございませんが、
何卒、ご助力の程、宜しくお願い申し上げます。

私の理解力不足で少々わからないところがあるのですが、
テキストボックスはwordやExcelにあるツールのことですよね!?
もし、上記のテキストボックスの事でしたらExcel上でUiPathのレコーディング機能や、
send hotkeyアクティビティなどでショートカットキーを用いてテキストボックスを選択する他無いと思います。
選択出来たらtype intoアクティビティでE5セルの変数を指定して入力くらいしか私には思い浮かばないですね。

kei-kappa_564様

早急のご回答、ありがとうございます。
私のレベルが低いせいでご迷惑をお掛けして申し訳ございません!!

テキストボックスのところは正直テキストボックスじゃなくても良いと言いますか、
実際はWebページのある箇所に入力したい、というものでした。
私が聞きたかったのは、取得した一行分の中のE5だけを特定の場所で使いたいというところで、
今自分の中で考えていたところ、cell(4)とすれば該当箇所が出力できるから、
Type into cell(4) とすればやりたいことができることがわかりました。
ここで教えて頂きましたWrite Line の使い方を応用すればできるとすぐわかるはずでしたが、
私は今気づきました…。
とにかくkei-kappa_564様のおかげでこの問題はクリアできそうです!

大変助かりました。ありがとうございます!!

すみませんその様な意味だったのですね!
兎も角解決できてよかったです!!