【VBA】UIAutomationで業務改善3

RPAなんて不要

どうも。「やめろよ。やめろよ。」と言っても台風の時に河川覗く人と、ハロウィンパーティでウィルス集団感染する人の脳内は似てる。と思ってるjimです😉

今回の記事で、いよいよ『UIAutomation』を使うわけだけど、ザックリな説明です😣

こゆのとか、他のAPIと組み合わせて使えば、RPAを黙らせることが出来る、、、

に違いないと思ってます。

結局、プログラミングを使った業務改善って、発想の問題なんだよね。

RPA使ったところで、組み立てる人のサービス精神が乏しければ、いいものも作れないわけで。。。

『どんな手を使ってでも成し遂げよう!』っていう、気持ちよ!

気持ち気持ち😄

 

エレメント取得

今回は、電卓を使って説明します🖥

業務改善1で紹介した『UIAutomationSpy』でエレメントを取得します。

【VBA】UIAutomationで業務改善1

電卓とUIAutomationSpyを開いて、UIAutomationSpyのStartを押すとエレメントの取得が始まります。

ちなみに、Stopで止めないとカーソル部分のエレメントを取得し続けます。

↓UIAutomationSpyの内容(ControlTypeId、Class、Nameの順)

こんな感じの入れ子になってます。

今回、最初のウィンドウはハンドルから取得して、2行目から順にエレメントを取得し、最終的に『1』のエレメントを取得します。

取得の仕方は、ハンドル操作に似ていて、NameかId(Class)を指定して取得します。

多分、分からないと思うので、実際にコードを記述します😓

 

UIAutomationで電卓の操作

とりあえず、参照設定から、、

『UIAutomationClient』にチェック入れます。

それから、親のハンドルを取得するために『FindWindowA』のAPIを定義します。(今回は親だけで大丈夫)

定義の仕方は↓

【VBA】UIAutomationで業務改善2

親ハンドルを取得するコードを記述します。

次に、電卓ウィンドウを取得。

んで、下が『UIAutomationSpy』で取得した2行目の処理。

Nameで取得の場合⇒(UIA_NamePropertyId,"Name")

Classで取得の場合⇒(UIA_ClassNamePropertyId,"Class")

2行目と同じ処理を繰り返して、最終的に『1』を取得します。

そして、取得したエレメントに送信もできると。。。

因みに、キャプション名の取得も出来るし、文字列も送信できます。

 

最後に

『1+1=』のコードを記述してみました👍

これなら、分かりやすいんじゃないかな?

ってことで、全部で3記事にもなってしまったけれど、「APIを使えばoffice以外のことも色々出来ちゃうよ。」って話、、、

長いか😅

 

あ〜い、とぅいまてぇ〜ん🖐