はじめに
主にExcel VBAを使用したUIAutomationの活用方法について掘り下げた記事を書いていきたい。おそらく、世の中の99%には需要が無い記事になる。
なぜ需要が無いか
基本的に、この世界はUIAutomationなんか使わなくても良いようになっているからである。
- デスクトップ操作の自動化以前に、業務フロー全体を自動化するサービスが沢山ある
- ブラウザ操作ならSeleniumもあるし、IEモードならMSHTMLが使えるし、PADもある
- 他アプリの自動化もPADとかで十分(むしろそっちの方が多機能)
- (UIAutomationで実現する仕組みは)開発者以外に配布して運用するのに不向き
- 活用している人が少なすぎて、機能を深堀りした記事が皆無
- 公式ドキュメントが解りにくすぎる
- 単語がやたらと長くてコーディングしにくい
- ある画面の自動化で作り込んだ機能を、他の画面の自動化処理に流用しにくい
- エラー判定と対策が面倒
- tagPoint死すべし
など、"UIAutomationを使わない理由"は枚挙に暇がない。
どこに需要があるのか
逆に、2024年現在においてもExce VBAでUIAutomationを活用する意味があるとすれば
- Excel以外のツールを一切使わずにデスクトップ上の何かを自動操作したい
- 開発者自身が都度コードの面倒を見ながら、小道具感覚で使う(単発マクロの感覚)
- MSHTMLが使えなくなった後でも似たような感覚で処理を続けたい
- PADの動作がトロ臭いので、もっと攻めた自動化がしたい
- PCスペックが低すぎてPADを動かす余裕がない
- 研究目的
といった辺りだろうか。深く掘り進めると結構便利な機能が用意されてるので、VBEのオブジェクトブラウザーに表示されているメンバー一覧を一気にセルに書き出すとか、ちょっとした定型業務だけど通常のアプローチだと自動化できない(または自動化する手間が掛かり過ぎる)作業を手軽に自動化したい時には活躍してくれると思う。
また、UIAutomationに用意されているマイナーな機能は世の中に一切記事が出回っていないことも多いので、他人が真似できない記事を書きたい人は研究してみると面白いかもしれない。
筆者の活用方法
私は職場では、主にEdgeの自動操作のために活用している。社内の基幹システムの各要素へのアクセス方法を関数郡として用意し、必要に応じてその機能を組み合わせて定型業務の一部をワンクリックで処理できるようにすることが多い。