毎回、値に基づいて必要項目をExcelから読み取る方法

やりたい事

以下の入力ダイアログを設定

・注文Noを入力してください

入力ダイアログに入力されたものを
変数として格納する

その都度(最新を開きたい為)固定のExcelを開く

Excelから格納された値を検索してソート

ソートされたもののなかから必要な項目をそれぞれ読み取り

例 (A2セルの値、C2セルの値、E2セルの値、Gセルの値)

読み取ったものを一行で書き込み

以下の構成ができるような仕組みを作りたいのですが、全くの素人の為、サイトや参考書は見てるのですがひとつひとつの操作しか理解できず、
複合させて考えることが出来ません。

どういった手順でどのアクティビティの
配置が必要か教えて頂きたいです。

ロボットを作成する際に、各人各様の作り方があるので、手順とかアクティビティを。。。と言うと回答しにくいです。回答したとしても、却って混乱するかもしれませんね。

私のイメージだと、
・入力された注文Noは、最新のEXCEL上の固定列に複数あり、それを検索。
・その隣の列に識別セルがあって、その識別セルには、発注者住所、送付者住所、注文明細(複数行)、メモの識別コードがあって、
・識別コードによって、異なるセル位置の値を読み込み、
・その情報を別のEXCELに転記(あるいは1行のCSV形式?)する

なのかなぁ。。。

ご回答頂きまして有り難うございます。

回答しにくいような質問文になっていた事に
お詫びいたします。

HANACCHI様のご解釈通りのイメージです。

参照したいExcelがあり、
そのExcelはいくつかの
列と行で成り立っております。

A B C D
番号 注文No. 商品名 値段

等の内容が入っております。

異なるセルを読み取り書き込みしたいのですが
どういう風にしたら良いか、分かりません。

この方法をご教示いただけたらと思います。

当方、プログラム自体も初心者です。

おそらくは、1注文№から、マスタファイル上のシートのセル位置をどう検出するかって事として話を進めます。

1)マスタファイルのシート上のセルのデータは、「範囲を読み込み」アクティビティと言うもので、DataTable型の変数に格納します。
2)「繰り返し(各行)」アクティビティで、DataTable型の変数を指定し、1行後と扱えるようにします。その際、現在のインデックスにixなど、Int32の変数を設定していきます。
⇒EXCELシートの最初のデータは0、次の行のデータは1と言うように、一つづつ増えていきます。
3)「繰り返し(各行)」アクティビティの下で、注文№が一致するかを判定し、判定したらその時の「現在のインデックス(=ix)」を使って、情報を利用できるように別の変数に格納します。
⇒「条件分岐」アクティビティのCOnditionに、
Row.Item(“注文№”).ToString.Equals(1注文№)とし、
一致したら、True側に【加工処理】を記載。
その処理の最後に「Break」アクティビティをいれ、
「繰り返し(各行)」アクティビティのループ制御から抜ける。
4)加工処理は、DataTable.Rows(ix).item(“商品名”),ToStringで、別の変数に格納する(Row.item(“商品名”),ToStringでも可能)。

初心者のわたしにも分かるように
ご丁寧な説明頂きまして、また
私の下手くそな説明に対しても
内容を解読して頂いてる事に感謝致します> <

初歩的な質問してしまいますが、
あまりにも初心者な説明で気分を
害されてしまった場合は申し訳ございません。

1注文№から、マスタファイル上のシートのセル位置をどう検出するかって事として話を進めます。

★マスタファイルとはExcelファイルの事でしょうか?

1)マスタファイルのシート上のセルのデータは、「範囲を読み込み」アクティビティと言うもので、DataTable型の変数に格納します。

★この際seet1で範囲は" "の
ままで良いでしょうか?

2)「繰り返し(各行)」アクティビティで、DataTable型の変数を指定し、1行ごと扱えるようにします。その際、現在のインデックスにixなど、Int32の変数を設定していきます。

★注文No.には数字のみの場合と文字が入る場合の両方が存在しています。
この場合はint32ではなく、
stringになるのでしょうか?
それとも注文No.の定義ではなく
一行ごと扱えるための変数なのでしょうか?
(理解しておらず、申し訳ありません)

⇒EXCELシートの最初のデータは0、次の行のデータは1と言うように、一つづつ増えていきます。

3)「繰り返し(各行)」アクティビティの下で、注文№が一致するかを判定し、判定したらその時の「現在のインデックス(=ix)」を使って、情報を利用できるように別の変数に格納します。

⇒「条件分岐」アクティビティのCOnditionに、
Row.Item(“注文№”).ToString.Equals(1注文№)とし、
一致したら、True側に【加工処理】を記載。
その処理の最後に「Break」アクティビティをいれ、
「繰り返し(各行)」アクティビティのループ制御から抜ける。

4)加工処理は、DataTable.Rows(ix).item(“商品名”),ToStringで、
別の変数に格納する(Row.item(“商品名”),ToStringでも可能)。

★この教えて頂いた、処理のロボットを作成する場合
入力ダイアログに入力された値を変数として格納
この部分は、前提にあると見ても良いでしょうか?

私の解釈では(変数として格納された値をHANACCHI さんは1注文Noと表現されている)

上記と認識致しましたが、私の認識は合ってますでしょうか?

以上★計4点の内容について教えていただけますでしょうか?

とりあえずまずは
ご教授いただきました内容をひとつずつ試してみたいと思います。

適宜改行を削っています<m(__)m>

1注文№から、マスタファイル上のシートのセル位置をどう検出するかって事として話を進めます。
★マスタファイルとはExcelファイルの事でしょうか?
▲実際にはどのようなものか分かりせんがイメージしやすいように「番号 注文No. 商品名 値段」が格納されているファイルを
▲「マスタファイル」と表しました

1)マスタファイルのシート上のセルのデータは、「範囲を読み込み」アクティビティと言うもので、DataTable型の変数に格納します。
★この際seet1で範囲は" “の
ままで良いでしょうか?
▲マスタファイルのシート上にどのように格納されているか。。。ですが、
▲スタンダードに、A1セルから始まり、1行目に列名(番号 注文No. 商品名 値段)、
▲2行目以降に実際のデータが存在するとすると、”A1”でも、”"でもOKです。

2)「繰り返し(各行)」アクティビティで、DataTable型の変数を指定し、1行ごと扱えるようにします。その際、現在のインデックスにixなど、Int32の変数を設定していきます。
★注文No.には数字のみの場合と文字が入る場合の両方が存在しています。
この場合はint32ではなく、stringになるのでしょうか?
それとも注文No.の定義ではなく一行ごと扱えるための変数なのでしょうか?
(理解しておらず、申し訳ありません)
▲Int32の変数は、いまどこの行を指しているかの変数となるので、Int32です。そうです!一行ごと扱えるための変数なのです!

4)加工処理は、DataTable.Rows(ix).item(“商品名”),ToStringで、
別の変数に格納する(Row.item(“商品名”),ToStringでも可能)。
★この教えて頂いた、処理のロボットを作成する場合
入力ダイアログに入力された値を変数として格納
この部分は、前提にあると見ても良いでしょうか?
私の解釈では(変数として格納された値をHANACCHI さんは1注文Noと表現されている)
上記と認識致しましたが、私の認識は合ってますでしょうか?
▲合っています!

こんな右も左も分からない無知な私に
ご丁寧に説明を頂けて本当にありがとうございます><

当方、VBAもプログラムの知識もなく、Excelで簡単な関数 VLOOK UP等の変数しか
使用していなかった程度だったのですが、職場より
「試行期間の間に実際に導入に対するお返事をする為にUipathの操作方法を覚えてもらいたい」
ということで勉強しているのですが、社内にとってもUipath自体初の試みの状態でして
(スペシャリストが居ない環境)でして本当に困っておりました。

なのでこうやって回答を頂けることに感謝です。。。
私の質問も理解しにくい内容になってて申し訳ございません;;

とりあえずHANACCHIさんに教えて頂いた内容を自分で作成するようにするので
もしも不明点あればまたお力をお借りしたくその場合は質問してよろしいでしょうか><?

1 Like

全然お待ちしていますよ。頑張ってくださいね。

とりあえず、UiPathアカデミー(無料)を受講するといいかも!

ありがとうございます><;;

実は当初はUi Pathアカデミーの受講で動画も見てはいたのですが
途中から私にとっては宇宙用語?笑 のように聞こえてくるくらいただ流しているだけで
理解できず、スピードが当時の私には速すぎて・・・(再生速度の問題ではないです 笑)
まったくついていけない為、参考書を購入しました。

Pathアカデミーの内容は講習を受けてZIPをダウンロードして
プログラムされているものを実行して、
復習する形だったので今よりももっと理解できませんでした><

その講習で出てきたものを自分でいちからの状態で作ろうとしたらエラーが起きたりでして
「なぜそのエラーが起きているのか」が当時の私には理解できておりませんでした。

なので実際に自分が作りたいものを形にしていて覚える方法が
最も自分に適した覚え方でないかと考えた次第でございます!

ですが確かに少しは成長したかも?しれないので
もう一度UiPathアカデミー受講すると良いかもしれないですね!

アドバイスありがとうございます★

成長!

いい言葉!(^・^)

ある程度、 konko_yukiyaさまの理解が進んだら、解決策にチェックをお願いします。

1 Like

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