その買うを、もっとハッピーに。|ハピタス

IEで全ソースを取得する - VBA、IE制御

ちょくちょく小ネタを掲載していきたいと思います。
IEでページの全ソースを取得する関数を作りました。
今まで関数化せずに「objIE.document.all(0).innerHTML」で取得してましたが、all(1)の方に入ってることもあるんですよね。
経験上多分all(2)に入ってることは無いと思うのですが、まぁ何にせよサイトごとに記述を変えてました。
しかし面倒だなと思い関数化しました。

'---------------------------------------------------------------
'関数名:getHTMLSource
'内容:ヘッダーからボディーまでの全てが入ってるソースを取得
'引数1:IEオブジェクト
'戻り値:HTMLソース
'---------------------------------------------------------------
Function getHTMLSource(ByVal objIE As Object) As String
    Dim objItem As Object
    Dim src As String
    For Each objItem In objIE.document.all
        src = UCase(objItem.innerHTML)
        If InStr(src, "<HEAD") Then
            If InStr(src, "</BODY>") Then
                getHTMLSource = objItem.innerHTML
                Exit Function
            End If
        End If
    Next objItem
    getHTMLSource = ""
End Function


特に難しいことはしてなく単純にallの全要素をFor eachで回して、Headの開始タグとBodyの終了タグが入ってたらソースの入った戻り値を返してます。
これでどのサイトもこの関数でHTMLの全ソースが取得出来ます。
毎回この関数を書くのも面倒なので、xlaファイルに記述しておいて読み込んで使うと便利です。
使って様子を見てますが、今のところ動作に問題はありません。