ExcelVBAでRPA(Robotic Process Automation)するコツ

とある古のシステムのUIが悪いのでExcelVBAでがんばってみた。
VBAなら特にお金もかからないし、なにせIE縛りのシステムでも手軽にRPAできる。
ほんとエクセルは最高です。

さて、そんないけているIE縛りのレガシーなIE縛りのシステムをVBAでRPAする際に気をつけるポイントをまとめてみた。
どうみてもバッドノウハウ集ですね。

小画面を拾う

古のシステムではやたら新しいウインドウが開きます。
自分で開く場合はオープンするプロセスの中で新しいウインドウを捕捉できるのですが、
大半はjsとかで開かれ、メニューバーとかを潰したりとがんばっているのでそこを読み解くのは心が折れます。
開いた後ウインドウを探してタイトルで捕捉しましょう。
こんな感じでIEのウインドウをすべて探し出して、タイトルとかURLで補足

    Set objShell = CreateObject("Shell.Application")
    For Each objWin In objShell.Windows
        If objWin.Name = "Internet Explorer" Then
            Set objIEsub = objWin
              If objIEsub.document.Title = "ユーザ検索画面" Then
                  Exit For
              End If
       End If
    Next

子画面の表示が終わりきる前に動いてしまうことがあるので、そんなときはApplication.Waitでも入れましょう。

フレーム対処

古のシステムではなんでもない画面でもフレームが多用されてるのも特徴なのでこれも対処、
document.framesで掘っていきます。入れ子になっていてもがんがんいきましょう

Set inputTag = objIE.document.frames("contents").document.getElementById("ok")
inputTag.Click

IDがついてない項目

これはしゃーないので気合いで対処します。
何番目のInputタグだとかで気合をいれて操作してください。
もうコツでもなんでもないですね。


IE専用にデザインされているシステムは使いにくいことも多いのですが
こんな感じでなんとか共存できるのではないかと。