ループの中での セルに書き込み の使い方



今までWinActorを使ってきてワークフローを作成してきました。(WinActorではワークフローをシナリオと呼びます)最近UiPath Community Editionの勉強を始めた者です。
(つまりUiPath初心者です)
やりたいことは以下の通りです。

目的:Excelから発駅と着駅を読み込んで、Yahoo!路線情報に入力し、最安の6か月通勤定期代金をExcelに書き込みたい。

具体的なワークフロー作成イメージは下記のとおりです。

1.Excelアプリケーションスコープの 範囲を読み込み で、excelファイルを読み込み

2.繰り返し各行で 変数「出発」「到着」にDataTable変数の値を代入

3.Web自動レコーディングで作成したWebアクティビティで変数「出発」「到着」の値をWebに自動入力

4.検索ボタンー料金の安い順ールート1ー定期代 のボタンを順番にクリックする。

5.添付画像の43,960円の中の"43,960円"をテキストデータとして変数「定期代」に取得(文字列整形は後でやります)

6.変数「定期代」の値をExcelに書き出す。

最期の6.でExcelアプリケーションスコープで、定期代を路線.xlsxのF2:F7に書き込むため、繰り返し(前判定)の中で、セルに書き込みアクティビティを入れて見ました。

セルに書き込みアクティビティの中で
Cells(6,行)というセル位置に対して、定期代をF2, F3, F4,F7のセルに書き込むようにしました。
ところがアクティビティをワークフローに配置してみたら、3枚目の添付画像のエラーが出ました。どなたか、原因と解決策を教えてください。

以下で試してみてください。

誤 Cells(6,行)
正 “F”+行.ToString

1 Like

ご指摘の個所を修正したら、今度は2番目の画像のエラーが出ました。うすうす気づいてはいるのですが、繰り返し(前判定)アクティビティの中でどこにも 発着駅DTDataTable変数 を指定していないので、それが原因ではないかと推測します。もし私の推測が合っていれば、どこで発着駅DTDataTable変数を指定するのか教えてください。

エラーメッセージを追記しました。

データテーブルは[繰り返し (各行)]での処理が適しています。
「現在のインデックス」で何回目の繰り返しか得られます。
初回が0で、1回繰り返しごとに自動的に+1カウントアップしてくれます。
F2セルに書き込むので「行+2」で値を調整してます。


路線
繰り返し(各行)の繰り返しの仕組みを確認させてください。

1.インデックスはプログラマが意識しなくても自動でカウントアップされますよね?
2.ご教示のとおり、添付画像1枚目のように、繰り返し(各行)を使ってワークフローを作り直しましたが、ワークフローを実行すると、添付画像2枚目のように、Excel2行目に43960円を書き込みましたが、3行目の処理が始まりません。言い換えますと、処理がループしません。どうしてでしょうか?

繰り返し「現在のインデックス」に、変数 行 を設定し忘れている??
もしくは、発着駅DTが1行しかない。

メッセージボックスなどで変数 行が実行中どうなっているか、確認してみてください。

row(“出発”)

変数一覧
キャプチャ

>繰り返し「現在のインデックス」に、変数 行 を設定し忘れている??
上記のご質問は問題ありませんでした。(添付画像1参照)
>もしくは、発着駅DTが1行しかない。
添付画像2で発着駅DTの最終行を取得しましたが、6でした。

もう1度お伺いします。
インデックスはプログラマが意識しなくても自動でカウントアップされますよね?
※3連休は原則として仕事をしないので返信が遅れます。

インデックスはプログラマが意識しなくても自動でカウントアップされますよね?

されます。
Main.xamlを添付頂くほうが早いかもしれません。

Main.xaml (29.4 KB)
Main.xamlを添付しました。解析よろしくお願いします。

Main.xamlってテキストファイルなんですね。。。。。

まずセレクターが固定になっているので不適切です。

[表示中のテキストを取得 ‘6か月定期券’]
<webctrl aaname='43,960円' parentid='route01' tag='SPAN' />

<webctrl aaname='*円' parentid='route01' tag='SPAN' />

次に、繰り返し1回ごとページが遷移しているので、繰り返しの先頭で入力画面に戻る必要があります。

[URL に移動]
https://transit.yahoo.co.jp/

回答ありがとうございます。
3点質問をさせてください。
1.WinActorのWebスクレイピング技術XPathでは、ループ内で別の文字列が表示されても、位置さえ合っていればワイルドカードを指定する必要はありませんでした。 セレクターでは、ループの中で毎回違う表示が出る場合、必ずaaname=にワイルドカードを指定する必要がありますか?

2.ところで、セレクターはW3Cあたりで標準化された技術ではなく、UiPath社独自技術なのでしょうか?

3.確かウィンドウにアタッチでもURLを指定できたと思います。同一ページでURLを指定する場合、URLに移動、ウィンドウにアタッチ どちらを使ってもよいのでしょうか?

>1.

一意に定まればワイルドカードは不要です。

>2.

独自のものです。

>3.

ページ遷移は「URLに移動」アクティビティを使用します。


Main.xaml (30.5 KB)
今度は、文字を入力 出発 で添付画像1枚目のエラーが出ました。Main.xamlも添付するので、デバッグご支援をお願いします。

エラー再現しませんでしたが、おそらくPCの再起動、Chrome拡張機能の再インストールでなおると思います。


どうも、Main.xamlが壊れたようです。PCを再起動して、ワークフローを読み込むと、まず添付画像1のエラーメッセージが出て、Main.xamlを保存してワークフローを実行すると、出発をWebページに入力するところで、添付画像2のエラーメッセージが出ます。
1からワークフローを作り直した方が早いですか?Main.xamlも添付します。Main.xaml (28.9 KB)