2021年10月28日木曜日

vbaで 起動済みの IEを捕まえて、webページから必要な情報をゲットする。

マイクロソフトはもはや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の手作りで始められる。

冬の朝。まだ、日が昇る前に歩くのがいい。息は白い。

0 件のコメント:

コメントを投稿