ExcelやAccessのVBAでWebのHTMLを取得して処理をする


Web情報を得る段階

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'Sleepの定義
Sub gethtml() 
    Dim objIE    As Object  'IEオブジェクト参照用

    'IEのオブジェクトを作る
    Set objIE = CreateObject("InternetExplorer.application") 
'    objIE.Visible = True 'エクスプローラで表示する
    objIE.Navigate URL

    Do Until objIE.Busy = False    '読み込みが終わるまで待つ
        Sleep 1000
    Loop

    Debug.Print objIE.Document.Body.InnerHtml 'イミディエトにHTMLを表示する

    'IEを閉じる
    objIE.Quit
    Set objIE = Nothing


htmlを解析し必要情報を取得する

    Dim objTAG   As Object  '1つ1つ タグのオブジェクトを入れる

    For Each objTAG In objIE.Document.all    'odjTAGにタグが順に代入される

        If objTAG.tagName = "IMG" Then
            If objTAG.src = "http://〜〜/point.gif" Then
                Title = objTAG.nextSibling.innertext
            End If
 
        ElseIf objTAG.tagName = "SPAN" And objTAG.className = "class21" Then
            tmp = objTAG.innertext

        End If
        
    Next

InternetExplorer.application.Documentのプロパティ
objTAG.tagName
 タグ名が大文字で入っている
objTAG.src
 srcメンバはtagNameがIMGの時のみ存在するのでIf文の内側で判断する
 絶対URLが入っている
objTAG.innertext
 そのタグの内側にある文字列
objTAG.nextSibling.innertext
 そのタグの次のタグの内側にある文字列
objTAG.className
 そのタグのクラス名
objTAG.ID
 そのタグのidの値



便利な関数

InStr(objTAG.innertext, "シアター")

シアター文字列の出現する位置を返す
存在しない場合には0を返す