最近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)と変換しています。