新年明けましておめでとうございます。昨年も新たな仕事にチャレンジすることができ、無事に独立3年目を迎えることができました。クライアント様には改めて御礼を申し上げる次第です。
さて、年末年始は溜まっていた事務仕事を片付けつつ話題のRPAを作ってみようかと考え、最近新たな関与先が増えもありeTaxの開始届の項目を自動で入力するのを作ろうとしました。しかし、入力項目が多すぎて最初のWebレコーディングするのに心が折れてしまい(苦笑)。どちらにせよ入力データはExcelに格納することからExcel VBAでそのまま転記させたしたほうが早いかと思い(法人・個人の両方ありますし)作ったのはいいものの、想定外のエラー対策に悩まされした。
その1:信頼済みサイトではInternetExplorer.Applicationがエラーになる
VBAからIEを操作する際のお約束として、Set objIE = CreateObject(“InternetExplorer.Application”)でオブジェクト宣言しますがサイトが信頼済みサイトになるとエラーとなるようです(保護モードが変わるため)。
この場合にはSet objIE = New InternetExplorerMediumにしてあげる必要があり、まずここでネットからのコードのコピペでは引っかかります。
その2:郵便番号から管轄の税務署を自動選択させることができない
操作はクリックであっても単にページ移動させるものであれば単純にgetElementByID(“id”).Clickで実行できるのに対し、郵便番号から管轄の税務署を自動選択するのはクリックではなくJavascriptを実行させているため、ClickではなくgetElementById(“id”).FireEvent (“onmousedown”)で実行させないといけないということに気付くのに時間を要してしまい。やはりHTML/Javascriptの知識も必要だと改めて痛感しました。
その3:ページ遷移の際の確認メッセージでOKボタンをクリックすることが出来ない。
これが最大の難関でした。最初はSendKeysで軽く処理すればよいと安易に考えていたところ全くSendKeysは機能せず。ハンドルを取得しようともエラーとなり、さてどうしたものかと。
そこでRPAソフトのUiPathで当該ウィンドウをWebレコーディングし詳細を調べたところ、<wnd app=’iexplore.exe’ cls=’#32770′ title=’Web ページからのメッセージ’ />とあるのでハンドルは可能なはずでWindows APIのFindWindow関数とPostMessage関数で対応するまでは分かったものの機能せず。
もう無理かとGive-up寸前までいきましたが、ページ遷移をする際に「次へ」をクリックするのではなく「次へ」をクリックして確認メッセージを出力させるJavascriptを実行させFindWindow関数とPostMessage関数で処理することが分かり、何とか最後まで実行させることが出来ました。
正直さっさと入力した方が早かったのは事実ですが、個人のeTax開始届はそのまま流用できたのと今後のExcelマクロ研修用の教材としていい具体例ができたのでまぁよかったかなと。今年はExcelと他のソフトウェアとの連動を研究していきたいと思います。
