Excel チェックボックスの値を取得する方法

SampleTest.xlsx (11.8 KB)

Excelファイルで、添付のようなチェックボックスがあります。
Aプラン、Bプランという選択肢は、セルに入力されているのですが、
その横に配置されているチェックボックスのON、OFFが取得できずに困っています。
チェックボックスと選択肢までを「画面上で指定」しても、
Image Exists、Text Exists、Element Exists
のいずれでも、ON、OFFを正しく取得できませんでした。
何か方法はありませんでしょうか?
よろしくお願い致します。

@noir_chat さん

UiPathのバージョンが違うかもしれませんが・・
添付して頂いていたサンプルの状態だけでしたら
Community Edition 2019.8.0 でClickアクティビティを使用し、
Aプランのセルをクリック、その後プロパティにあるXのオフセットを
-80にしてチェックのOnOffが可能でした。
(Bプランも同様にする)

----- 追記 -----

すみません、勘違いで上記を書いてしまったかもしれませんが
チェックボックスの値を取得、とはどのような現象の事でしょうか。

チェックが入っていればTrue、チェックが無ければFalse等のイメージですか?

UiPath側で解決するよりは、Excel側で解決したほうがベターかと思います。

  • チェックボックスには、チェックボックスのステータスに応じて特定のセルをTrue/Falseに変化させることが出来る設定項目があります。
  • 上記を利用して、特定のセル(表示されているところでも、そうでないところでも大丈夫です)にTrue/Falseが入るように設定します。
  • 設定後、Read Cellで設定した特定のセルを読み込み、その結果を用いることでチェックボックスのON/OFFが(結果として)取得できます。

Erina様
ご返信ありがとうございます。
>チェックが入っていればTrue、チェックが無ければFalse等のイメージですか?
はい、こちらのイメージです。
回収したExcelファイルに入力されている内容をRPAで取りまとめて、
Aプランを選択した件数と、Bプランを選択した件数を集計したいのです。

アンカーベースも試してみたのですが、初心者で使いこなせていないのか、
チェックのON、OFFが正しく認識できずにいます。

cheez_RPA様
ご返信ありがとうございます。
やはり、Excelを修正した方が、適切ですよね。
次回は、ご教示頂いた方法でExcelを作成してみます。
今回、既にExcelが回収済みのため、RPAの解決方法がないか、探しておりました。

@noir_chat さん

Excelのフォームコントロールのcheckedは全部Falseになってしまいますね。。

コントロールの書式設定にあるオフ・オンは正しく認識してくれるようですが、現状はまだ実用的ではないかもしれません :sweat_smile:

参考までに図を載せておきます。

こんにちは

画像認識でよければ以下のような感じになると思います。

Main.xaml (7.6 KB)

2019.8CE+EXCEL2013で動作確認しています。
なおEXCELのワークシート内の各要素が取れるようになったのは最近のことかと思いますので、Enterprise版では厳しいかもしれません。

v2018.4の場合、Clickアクティビティのクリッピング領域を設定すると出来ました :smiley:
しかし現状はまだExcelで対応された方が確実かもしれませんね。。

Yoichi様
ご返信ありがとうございます。
アップして頂いたファイルを参考に、Find Image Matchesで試してみました。
当方の集計対象のファイルに、フォームコントロールで作成されたチェックボックスが2つあるためか、やはり、正しく値が認識できません。
アップして頂いたファイルでは、画像にチェックボックスのみを指定されていますが、
(当方がアップしたSampleファイルの様な)A、Bどちらのチェックボックスが識別させるような設定は、何かされておりますでしょうか?
セレクタ―をいじってみたりしたものの、上手くできませんでした。。。

Erina様
ご返信ありがとうございます。
当方でアップ致しましたSampleファイルでは、チェックボックスとテキストのみなのですが、
実際の集計対象のファイルには、説明文の記載の下にチェックボックスが配置されているため、スクロールする必要があります。
ファイルによって(保存時のカーソル位置が異なるため)、スクロールする必要があったり、なかったりするので、ご提示くださった「コントロールの書式」の表示にトライしてみましたが、
クリッピングでの座標指定で上手くキャッチできませんでした。
(初めてクリッピングしてみたため、やり方が悪いだけかもしれませんが。。。)

クリッピングでの座標指定で上手くキャッチできませんでした。
(初めてクリッピングしてみたため、やり方が悪いだけかもしれませんが。。。)

どのように操作されましたか・・?

こんにちは

(当方がアップしたSampleファイルの様な)A、Bどちらのチェックボックスが識別させるような設定は、何かされておりますでしょうか?

今回サンプルのエクセルファイルのチェックボックスオブジェクトに対するセレクターは以下を使用しています。3行目のidxの値(1 or 2)で上下を識別しています。

<wnd app='excel.exe' cls='XLMAIN' title='SampleTest.xlsx - Excel' />
<uia cls='EXCEL7' name='SampleTest.xlsx' />
<uia idx='1' name='オブジェクト' role='オブジェクト' />

ちなみにお使いのStudioのバージョンはいくつでしょうか?古いバージョンですとEXCEL内のオブジェクト自体が取れないかもしれません。またidxの値が大きくなるケースは安定しないかもしれません。

Yoichi様
ご教示くださり、ありがとうございます。
2つのチェックボックスについて、セレクターを確認し、
Aに該当する方がidx=‘2’、Bに該当する方がidx='1’が設定されていました。


xlsx形式で保存し直すと、体裁が崩れるとのことで、
xls形式のまま使い続けられてきたファイルなのですが、
ご指摘のように、古いバージョンのExcelということも、原因の一つかもしれないのですね。

こんにちは

パフォーマンスが少々良くないかもしれませんが、広い範囲での画像認識+座標を使って特定することも可能です。

以下一例ですが、
Find Image Matchingでチェックあり、チェックなしの画像要素をそれぞれ取得。
各要素のY座標の位置に応じて、上からTrue/Falseを格納する。
ようなことも可能かと思います。
サンプルファイル用のソースupしておきます。

Main.zip (2.4 KB)

クリックアクティビティで、「画面上で指定」⇒Excelをファイルが選択されている状態で、
左×右、上×下に表示されている値を参考にクリッピングの座標を指定してみました。
しかし、集計対象となるExcelファイルが開かれたタイミングで、チェックボックスが見えていないと、エラーになってしまいました。

サンプルをありがとうございます!
添付してくださったファイルを参考に試してみて、
Excelファイルが開かれた時に、チェックボックスが見えていれば、
正しくON、OFFが識別されることを確認しました。
スクロールしないとチェックボックスが見えない場合には、エラーとなってしまいますが、
見えていない画像をFindImageMatchesで認識させることはできるのでしょうか?

こんにちは

見えていない画像をFindImageMatchesで認識させることはできるのでしょうか?

画像認識なので見えていないもの(=描画されていないもの)は検出できません。
状況に応じて、スクロールする、表示倍率を小さくする(マッチングする画像も変更する)等の工夫が必要になると思います。
(ので画像認識はUiPathではどちらかというと最後の手段に近いかと...)

@noir_chat さん

チェックボックスが見える箇所までスクロールする事は問題ないですか?

CE 2019.8.0 Excel2016でファイル拡張子をxlsにしたもので試しました。
@noir_chatさんの 環境で出来ない部分もあるかもしれませんが、参考画像を添付します。

B200までジャンプしています。①のクリックは右クリックです。

あるいは下記でも可能です。

pgdn

idx属性についてですが、少し前まではUiPath Academyの「レッスン6 演習1」のPDFに

idx属性が使用されていますが、これは一意に識別するための固有の属性がターゲットUI要素にないためです。idx属性を使用しないように他の属性を追加してみましょう。

と記載がありました。
しかし最近の「レッスン6 演習1」のPDFを確認しますと

「idx 属性が使用されていますが、これは選択した要素に固有の情報がない場合、 セレクター上に自動的に生成されます」

と記述内容に変更が見られます。
また、現在のUiPath Academyにある「レッスン 6 - セレクター - 要約」のPowerPointには

何度も検出される要素の中から特定の 1 要素を取得するには、セレクターの idx プロパティを使用します。idx 属性の値が 2 より大きい場合は、他のオプションがない限り、idx 属性を使用しないようにしましょう。セレクターを安定動作させるため、常に、他の属性の追加を検討しましょう。

と記載があります。
以前と少し変わったように思いますが、参考までに記載いたします。

Happy Automation :wink::v:

クリックアクティビティで、「画面上で指定」⇒Excelをファイルが選択されている状態で、
左×右、上×下に表示されている値を参考にクリッピングの座標を指定してみました。

おそらく下図の箇所を確認して頂いたのだと思います。

position

ここに記載があるようにF3キーで領域が選択できますのでお試しください。

クリックアクティビティで「画面上で指定」
⇒Excelファイルが選択されている状態でF3キー押下
⇒マウスポインターが変わった後、指定したい部分をドラッグ

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