文字を入力アクティビティの使い方について

本来2020がはいるところがYYYYになっている!
となると、EXCEL側のTEXTがおかしいか、範囲を読み込みアクティビティがおかしいか。。。

@HANACCHI 様フォローありがとうございます。

うーん、試しにこちらでExcel(私の環境は2013)で、
示されている関数を入力したExcel範囲を読み込みしてみたら普通に取得できますね。

@miwa_yamamoto
ふと気になりましたが、ExcelのA列とD列への値入力はStudioで「実行」する前に入力されますか?
それとも実行後にUiPathが行います?

ありがとうございます。
Excelへの入力はStudioで「実行」する前です。納期変更.xlsx (24.2 KB)

EXCELアプリケーションスコープを使うと正しい値が取れました

2 Likes

こんにちは

System - File - Workbook - ReadRangeアクティビティのバグっぽいですね。

どうやら.netの日時形式文字列として処理されているようですので
元のEXCELのワークシートを修正できるのであれば

=IF(D2="","",TEXT(D2,"yyyy-MM-dd"))

のように yyyy-MM-dd とするとよさそうです。

3 Likes

ありがとうございます、ああーなるほど・・。
こちらでも再現確認できました。

@miwa_yamamoto
ということで、 Excelの範囲を読み込むときの問題のようですので、Excelの数式を直すか、
あるいはExcelの読取方法を
Excelアプリケーションスコープの「範囲を読み込み」に変更するかといったところですね。
問題をひっかきまわしてしまってすみません。

1 Like




Yoichi


row

データテーブル内の繰り返し処理ってどんな感じになってるでしょうか?
可能であれば繰り返し部分が見わたせるような画面キャプチャが欲しいところですね。

根拠はなく、なんとなくですが、
・ループ構造に繰り返し(各行)が使われていない
(繰り返し(前判定/後判定)を使用している)
・Excelの読み込んでいる範囲が適切でない
(超広い範囲を実は読み込んでいる)
・設定しようとしている変数の指定の仕方がおかしい
(ループの中で「納期変更.Rows(0).Item(“納期”).ToString」を使用している)
辺りがありそうな気がします。

1 Like

ありがとうございます。

データ読み込みがこちらになります。
image
繰り返し部分はこちらになります。
ご指摘のものが当てはまります。。。
⇒(ループの中で「納期変更.Rows(0).Item(“納期”).ToString」を使用している)
このままでは使えない状態だったのでしょうか。。

おそらく以下の二つの要素の合わせ技ですね。

1.データテーブル「納期変更」の件数を確認してみてください。(テーブル名.Rows.Countで取ったりデバッグで確認してみたり)
多分ですが中身が空の行が大量に、1000行くらい入っているのではないでしょうか。

2.「納期変更.Rows(0).Item(“納期”).ToString」は
「"納期変更"データテーブルの0行目(人間的なカウント方法でいうところの1行目)の"納期"列を文字列化したもの」を示しますから、
ループの中で使ってしまうと何周目でも常に0行目を取得してしまいますね。
せっかく繰り返し(各行)で納期変更テーブルの各行を、rowデータロウに切り出しているのですから、
それを使っていきましょう。(今回でいえばrow.Item(“納期”).ToStringなどにしてやればいいと思います)

データテーブルとデータロウの扱いはUiPathを使う中で結構重要なポイントになってくると思っていますので、
早めに手の内に入れておくことをおすすめします。

1 Like

ありがとうございます!

ご指摘の通りです。
空の行が大量に入っています。
どのようにすれば、外せますか。

また、「納期変更.Rows(0).Item(“納期”).ToString」の方、ありがとうございます。
教えて頂いた方法で直りました!!!

今は、書いている部分を繰り返した後、空白を繰り返し入力しています。

読み込み範囲が「A:B」になっているのでUiPathが解釈して読み込む行範囲を決めていますが、
今回、A列に書式が設定されている(セル色設定)ので、Excel的な最終行までを読み込んでしまっているように思われます。

もしA列が入力必須項目なようであれば、こちらの手段でA列に値が入っている最終行を取れますので、
これで読み込む範囲の最終行を定義してやるといいと思います。

1 Like

ありがとうございます。
作ろうとしたのですが、、
初心者過ぎて。。
エラーになります。

image

要素数を取得したい範囲はタイトル行を除くはずなので、スタートはA2からがいいでしょうね。
あとはIEnumerable型の場合に要素数を取るにはLengthではなくCountですね。
で、後段で範囲を読み込みのセル範囲を「“A1:B” + 要素数.ToString」とかにしてやればいいと思います。

ただ、こちらの環境でテスト実行してみたところ、
システム→ファイル→ワークブック 内の列を読み込みだとB列の式入力範囲に引っ張られた範囲を取得してしまうようなので、
Excelアプリケーションスコープ内で動作する
アプリの統合→Excel→処理 内の列を読み込みアクティビティを使った方がいいかもしれません。

1 Like

ありがとうございます。
Excelアプリケーションスコープで作り直してみました。

エラーが出るのですがわかりますか。

む。
多分ですが範囲プロパティの先頭のダブルクォートが二つになっているから・・?じゃないでしょうか。

ダメでした。。

よく見てみましょう。

です。ダブルクォートの位置に要注意。

2 Likes

これは、大変失礼いたしました!!!
見付けて頂きありがとうございます。
この部分のエラーから抜けました。
本当にありがとうございました。

1 Like

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