マイクロソフトはもはやIEを使うなといっているが、以下のようなvbaでwebページを捕まえて、情報を抽出してみた。
Dim objIE As InternetExplorer Dim objITEM As Object Dim objTD As Object Dim i As Long Sub Getpage() Set objIE = Nothing Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows If TypeName(objWindow.document) = "HTMLDocument" then Set objIE = objWindows debug.print objIE.document.Title If objIE.document.Title = "page-title" then objIE.document.forms("formname").param1.value = "KEYWORD" objIE.navigate "javascript:js_001;" ' Execute javascript js_001 Application.Wait Now + TimeValue(00:00:02") '画面表示を2秒待つ For Each objTD In objIE.document.getElementsByTagName("tr") For Each objITEM In objIE.document.getElementsByTagName("a") '↑↑↑このgetElementsByTagNameで目的のaタグを手繰るところがミソ If Instr(objITEM.outerHTML,"KEYWORD") > 0 then ' KEYWORDという文字列を持つaタグ(リンク)を探し、リンクをクリックすると、詳細ページが表示されるという構図。 'このとき、debug.print objITEM.nameとかobjITEM.vakueとかで確認するのがコツです。 objITEM.click 'リンク(ボタン)をクリックする Exit For End If Next Next Application.Wait Now + TimeValue(00:00:02") '画面表示を2秒待つ ' 上記コードをマネし、getElementsByTageNameでタグを手繰り、必要な情報をゲットする。 ' HTMLページの解析には、IEの開発者タブF12を使う。 End If End If End Sub
これでいいかな
こうやって、RPA(robot process automation)をVBAの手作りで始められる。
冬の朝。まだ、日が昇る前に歩くのがいい。息は白い。