見出し画像

第55回 Excel RPA IT限界集落 UI Automationの雄叫び

今後のスケジュールはコチラ
投げ銭ページはコチラ

登壇者:たーぼー(インコ)
日時 :2023年4月8日 20時
テーマ:Excel RPA IT限界集落 UI Automationの雄叫び

なんかかっこいいよね、このアイコン

自己紹介

本当の現場の自動化の人だぁぁ!(^^

RPAとは

UI Automationとは

パーツとして使われることもあるのね
確かに限界集落向きだぁ。
エレメントツリーってなんかカッコええな

使ってみよう


Inspectを使うとオブジェクトが視覚化できる

サンプルマクロを使って体験


動作確認テスト

001_デスクトップ取得

デスクトップ1が表示されたら動いている
デスクトップがRootElementなのね

002デスクトップ配下のChrome_WidgetWin_1クラスのウィンドウを1つ取得

EdgeでYahooのHPを開いた状態で実行してね
Edgeウィンドウ内のClassName=Chrome_WidgeWin_1
ClassName条件で検索をかけるんだね。
TreeScope_Childrenは1段下の構造まで検索
こんな感じで表示されれば成功

003デスクトップ配下のトップウィンドウ全てを配列として取得

こんどはエレメントArray(配列)使うのね。
CreateTrueCondition=なんでもOKの条件
このArrayはFor Eachが使えないので、0から.Length
こんな感じで出力されれば成功

004_デスクトップ配下のトップウィンドウからEdgeの可能性があるウィンドウ一覧を取得

004ではブラウザのみ取得する条件


3つ表示された。これは個人のデスクトップ状況で違う。

005_取得したEdgeかもしれないウィンドウ一覧から更に絞り込む

右端4文字=”Edge"のものを抽出
最後にActiveだったものが一番先に抽出される


取得できないトラブルでデバッグ中
最後のDebug.Print忘れてただけでした(`・ω・´)b

006_取得したEdgeウィンドウ内の、ドキュメント配置領域を取得する

取得したいエレメントを一意に決定するための条件を模索
SidebarContentsSplitViewで検索すると良さそう
TreeScope_Subtreeで深いところまで検索
TreeWalker機能。Treeの一つ上とか隣とかでエレメント指定・取得ができる
今回は4階層下のエレメントを取得したいので、4回同じコード。
このドキュメント領域を取得できる。
Class名ではなく、UIA_ControlTypePropertyIdで検索
何故か1回目は失敗する。Sleepしてから再実行するといける。
ドキュメントのタイトルが表示されればOK。

007_Sample_006のコードを使い、Edgeのドキュメント配置領域を取得する関数を作成

006までの内容を関数化

008_Edgeで開いたYahooのサイトを自動操作する

007のGetEdge(uia)でドキュメントエリア取得
さらに内部の構造調査
Inspectで見るとこんな感じ…深っ!
今回はナビゲーションウィンドウ内のリンクを操作
”ショッピングへ遷移する”リンクを目標
条件を二つ指定 CreateAndConditionメソッド。ORとかNotもある。
2つ去って↓のグループを取得
Invoke=何か実行するの意味。ここではリンクClick。
最後にInvokeメソッド実行することで、リンクClick実行されて
ショッピング画面が開くぅぅぅ!ひゅぅぅぅぅー。

UIAutomationの仕組みを理解しよう

いろいろ操作できるのね。

UIAutomationのコードを書けるようになろう


その他_実際に使って感じた問題点への解決策

その他_事例紹介

EXクラスを自作することでコーディング量を最小化

基幹システムの画面自体をクラス化することで各要素へのアクセスを容易に

アプリの構造を調査→対象エレメントを取得するコードの作成までを自動化

おまけ

得られた知見を適当にまとめ

CurrentとCacheについて


サンプルマクロと資料

Googleスライド資料

UIA_Explorer_Sample.xlsm は 独自開発ツール。
Inspectが導入できない環境でも構造解析支援ができたり、VBAコードの自動出力機能があります。これを見た人々の感想はこちら!

スケジュールと投げ銭

今後のスケジュールはコチラ
投げ銭ページはコチラ

この記事が気に入ったらサポートをしてみませんか?