繰り返し(データテーブルの各行)を使ってセルに書き込む処理

image

添付のデータテーブルを用いて、
注文番号~納期を「繰り返し(データテーブルの各行)」で1列ずつウェブ登録し、
その1列の登録が終わったら完了サインに”1”を入れる処理を作成したいです。

(例)2列目の注文番号1111~納期20210901の登録が終わったら完了サインに"1"を入力→次に3列目注文番号2222~・・・という処理を作成したい

ウェブ登録までのフローは問題なく作成できましたが
完了サイン”1”を入力するフローが何回もエラーになってしまいます。(「セルの書き込み」を使用しています)
image
範囲:“完了サイン”+transaction.Rows.IndexOf(CurrentRow).ToString
↑ここの構文?が違うと思うのですがどうしていいかわからず・・・

ど素人質問で申し訳ありませんがどなたか助けていただけますと幸いです。
よろしくお願いいたします。

もし「完了サイン」列の位置が「E」列で固定なら、

"E" & [現在の行番号 + 1]

とする必要があります。

記載されている「transaction.Rows.IndexOf(CurrentRow).ToString」は、現在の行インデックスですが、この値は「0」始まりです。(1行目が0、2行目が1)

なので

 "E" & (transaction.Rows.IndexOf(CurrentRow) + 2)

とすれば良さそうです。

多分、こんな感じです。

データによって「完了サイン」列の位置が変わるなら、完了サインの列位置から「E」や「F」のような値を導き出す必要があります。

以下、参考ですが

「セルに書き込み」よりも「範囲に書き込み」アクティビティで、データテーブルごと書き込むほうが「楽」です。(データテーブルの「完了サイン」列に「1」をセット → 「範囲に書き込み」アクティビティで書き込む)
速度もあまり変わりません。
さらに「完了サイン」だけでなく「完了時刻」を書き込むことになった場合、「セルに書き込み」を2回呼び出す必要がなく、コードがシンプルになります。

ご丁寧にありがとうございます。

imageで試してみましたが、
完了サイン”1”を入力せずに次の処理に行こうとします。

ちなみにフィルターをかけた状態でやっていますが、
web登録などは問題なく実行できます。
(エクセルの「範囲読み込み」でも$A$1:$E$3までちゃんと選択しています)
その他予想される原因はありますでしょうか。

また「範囲に書き込む」でやろうとした場合、どこに”1”と入力したら良いのでしょうか、、
image

ご回答よろしくお願い致します。

フィルター指定しているのですね。
可能なら、作成されているフローとエクセルをアップしてもらえると、原因・事象が分かるかも知れません。

範囲を読み込みアクティビティの「フィルターの指定」プロパティにチェックが入っていないと、
フィルターは無視して読み込みます。

セルに書き込み時はセルを指定しますが、上記の「チェック」を付けるとデータテーブルの行がエクセルの行番号とズレます。

「範囲に書き込む」で実現する場合「完了サイン=1」は代入アクティビティで事前にDatatableにセットします。この場合、範囲書き込みのシート名の横は「””」と記入します。(””=データテーブルの行列に合わせて、左上から書き込む)

「範囲に書き込む」アクティビティに「ヘッダーの追加」オプションにチェックを付けるのをお忘れなく(チェックしないとヘッダーが書き込まれません)

フローは以下のようなイメージです。

社内で偶然uipathに詳しい方に会ったため聞くことができました。
やはりフィルターをかけていることによってセルを指定できていなく、うまく処理できていませんでした。

また、「範囲に書き込む」についてもわかりやすいご説明ありがとうございます!

一旦この処理については解決できました。色々とご教示いただきありがとうございます。大変助かりました。

1 Like