InvokeVBAのすゝめ
それ、マクロでよくね?
こちらの投稿で、2019年のRPA流行語大賞に選ばれた
それ、マクロでよくね?
現場でRPA開発をしていると確かにこの言葉がよく出ます。特に他人が作ったロボを保守していて、わざわざロボットで組まないでいいような処理を強引にUI操作で実現しているような目も当てられないポンコツの前では、この言葉が罵詈雑言となって出てくる。
私個人としては、「マクロでやるべきもの、UI操作でやるべきものを正しく切り分ける」ことが大事だと考える。
しかし、厳密にこれはマクロ、あれはUI操作、と明確な判断基準がないので何とも言えないが、今日は明らかにマクロで実装したほうが良いものを(よかったもの)を2つ紹介する
シートの削除
仮にシートの削除をUI操作で実装しようとした場合、RPAツールでは
1. 削除対象のシートを右クリック
2. 「削除(D)」をクリック
3. このシートは完全に削除されます~~で「はい」をクリック
という3ステップを踏む必要がある。一般的にRPAツールでは画面描写のタイミングによってうまくクリックできなかったり、対象のエクセルが重すぎて削除に時間がかかって後続の処理がうまくいかなかったりと、UI操作には一定不安定要素が残る。
しかし、これをマクロ(InvokeVBA)で実装した場合は以下になる
Sub deleteSheet()
Application.DisplayAlerts = False
sheet([対象シート]).Detele
Application.DisplayAlerts = True
End Sub
グループ化の解除
これはさっきのシート削除と比べると、絶対にVBAで実装したほうがいいレベルの処理。たとえば、グループ化を解除したいときは、コレをクリックする必要があるが、そもそもこれが何行目に存在するのか、デフォルト表示なのか非表示なのか…という具合に、RPA化する上での罠がてんこ盛り。
ただこれをVBAで書くと
Sub グループ化解除()
On Error GoTo ERR
sheet([対象シート]).rows.Ungroup
ERR:
End Sub
はいおしまい。たったこれだけで確実にグループ化を解除する処理が組める(グループ化する処理も同様)
VBA活用によって得られる利点
安定性の向上
不安定要素を孕むUI操作よりも一般的に安定稼働する
可読性の向上
UI操作だけでは、何を実現したいのか直感的に理解しづらい点があるがコードであれば直感的に理解が可能
Author And Source
この問題について(InvokeVBAのすゝめ), 我々は、より多くの情報をここで見つけました https://qiita.com/kuma16/items/0459d0ff8ade5788ffae著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .