HTMLソースをダウンロードする


最近Ajax関連でよく聞くXMLHTTPオブジェクトですが、これを使うとHTMLソースを簡単にゲットできます。VBAテクニックに「ホームページ(URL)を開く」というネタでInternet Explorerを操作する方法を書きました。このようにIEのインスタンスを作って任意のページを開けば、そのソースも必然的に入手できるわけですが、いかんせん一度ページ全体を読み込まなければなりません。画像がたくさん貼ってあるようなページだと、それだけでも時間がかかります。もしHTMLのソースだけが欲しいのでしたら、XMLHTTPオブジェクトを使うと簡単です。

なお、XMLHTTPオブジェクトに関する詳しい情報はネットで検索してください。最近はAjaxに関連していろいろなページで解説されています。

次のコードは、http://www.officetanaka.net/other/index.htmをC:\sample.htmとして保存します。

Sub Sample()
    Dim Http, buf As String
    Set Http = CreateObject("MSXML2.XMLHTTP")
    Http.Open "GET", "http://www.officetanaka.net/other/index.htm", False
    Http.Send
    buf = StrConv(Http.ResponseBody, vbUnicode)
    Open "C:\sample.htm" For Output As #1
        Print #1, buf
    Close #1
    Set Http = Nothing
End Sub

CreateObject("MSXML2.XMLHTTP")部分は、XMLHTTPオブジェクトのバージョンによっては異なるそうです。私の環境ではこれでOKでした。また、文字コードの関係でStrConv(Http.ResponseBody, vbUnicode)と変換しています。