こんにちは!UiPath メンターです。
前回は、Excelの表データを「データテーブル」という一つの大きな箱に読み込むところまで行いました。
しかし、今のままではロボットはデータを持っているだけで、何もしてくれません。
「このリストの1行目を見て、システムに入力する」
「終わったら2行目を見て、入力する」
「それを最後の行まで繰り返す」
この「繰り返し(ループ)」こそが、ロボットが最も得意とする作業です。
今回は、読み込んだデータを1行ずつ取り出して処理する「For Each(フォー・イーチ)」の魔法を使いこなしましょう。
1. 使うアクティビティ:「繰り返し (データ テーブルの各行)」
前回作成した、データ読み込み後のフローの続きに配置します。
使用するのは、データの行数分だけ同じ動きを繰り返してくれるアクティビティです。
手順
- [アクティビティ] パネルで「繰り返し」と検索します。
- いくつか出てきますが、[繰り返し (データ テーブルの各行) (For Each Row in Data Table)] を選びます。
※似た名前の「Excelの各行」もありますが、今回は前回作成した変数を使うため「データテーブル」の方を使います。 - ドラッグ&ドロップで配置します。
2. どのデータを繰り返す?
アクティビティを配置すると、以下のような設定欄があります。
- [次のデータ テーブルの各行 (In data table)]:ここに対象のデータを指定します。
入力欄をクリックし、前回作成した変数の名前(例:dt_SalesData)を入力します。
これでロボットは、「ああ、この箱に入っているデータの数だけ回ればいいんだな」と理解します。
3. 最重要概念:「CurrentRow」とは?
このアクティビティの中に、[現在の行 (CurrentRow)] という項目があることに注目してください。
ここが初心者が一番混乱するポイントですが、イメージすれば簡単です。
- dt_SalesData: 全員の履歴書が入った「分厚いファイル」。
- CurrentRow: そこから1枚だけ取り出して、今まさに手に持っている「1枚の履歴書」。
ロボットは、1回目のループでは1行目を CurrentRow に入れます。
2回目のループでは、中身を捨てて2行目を CurrentRow に入れ直します。
つまり、ループの中(シーケンス)では、常に 「CurrentRow に対して命令すればよい」 のです。
4. 具体的なデータを取り出す
では、今手に持っている行(CurrentRow)から、「商品名」や「金額」といった具体的な列のデータを取り出してみましょう。
ループの枠(シーケンス)の中に、テスト用に [メッセージ ボックス] を置きます。
そして、表示させる文字の欄に以下のように記述します。
CurrentRow("商品名").ToString
式の解説
CurrentRow: 今の行のデータを見るよ。("商品名"): その中の「商品名」という列(ヘッダー)の値が欲しいよ。
※Excelの1行目に書かれている項目名を、正確にダブルクォーテーションで囲んで指定します。.ToString: 文字列として扱ってね。
💡 メンターからのアドバイス:列の指定方法
列を指定するときは、上記のように 列の名前(ヘッダー名) で指定するのが一番おすすめです。
「0番目の列」「1番目の列」と番号で指定する方法もありますが、Excelの列の順番が変わった瞬間にロボットが壊れてしまうからです。
5. 実行して感動しよう
設定ができたら [ファイルをデバッグ] してみましょう。
Excelにデータが3行あれば、メッセージボックスが3回表示されます。
1回目は「りんご」、OKを押すと2回目は「みかん」、次は「バナナ」……。
どうですか?
たった1つのメッセージボックスしか置いていないのに、ロボットが勝手に中身を書き換えながら処理してくれています。
これがループ処理の威力です!
今回のまとめ
- データを1行ずつ処理するには [繰り返し (データ テーブルの各行)] を使う。
- ループの中では
CurrentRowが「今処理している行」を指す。 - 具体的な値は
CurrentRow("列名").ToStringという式で取り出す。
⚠️ つまづきポイント:「列が見つかりません」エラー
実行時に「Column ‘商品名’ does not belong to table…」というエラーが出たら、以下の2つを確認してください。
1. 式に入力した列名(”商品名”)に、余計なスペースが入っていたり、漢字が間違っていたりしませんか?
2. 前回学んだ「範囲を読み込み」の設定で、[ヘッダーあり] のチェックが外れていませんか?
次回は、このループ処理をさらに賢くします。
「金額が1000円以上のときだけ処理する」「空欄の場合はスキップする」といった、「条件分岐(If)」を組み合わせます。
これで、人間の判断業務も自動化できるようになりますよ!