VBAでWebページを取得する、3つの方法を紹介します。
Internet Explorerを起動して、そこからHTMLソースを取得します。
CreateObject("InternetExplorer.Application")
でIWebBrowser2オブジェクトが作成され、そのNavigate()メソッドでURLを指定することで読み込みが行われます。取得結果はDocumentプロパティに、HTMLDocumentオブジェクトとして格納されます。
Dim ie As Object Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True ie.Navigate("http://example.com/") ' ダウンロード待ち Do While ie.Busy Loop ' 結果出力 Debug.Print ie.Document.body.innerHTML ie.Quit Set ie = NothingInternetExplorer Object | MSDN
直接HTMLDocumentオブジェクトを作成します。取得結果もそのままHTMLDocumentとして処理できます。
HTMLDocumentオブジェクトを使用するには、参照設定で[Microsoft HTML Object Library]を参照する必要があります。さもなくば「ユーザ定義型は定義されていません。」としてエラーとなります。
Dim html As MSHTML.HTMLDocument Set html = New MSHTML.HTMLDocument Dim document As MSHTML.HTMLDocument Set document = html.createDocumentFromUrl("http://example.com/", vbNullString) ' ダウンロード待ち Do While document.readyState <> "complete" Loop ' 結果出力 Debug.Print document.body.innerHTML Set html = Nothing Set document = NothingIHTMLDocument4 Interface () | MSDN
CreateObject("MSXML2.XMLHTTP")
でIXMLHTTPRequestオブジェクトが作成されます。取得結果はresponseTextプロパティに、Stringオブジェクトとして格納されます。ちなみにXML文書ならば、responseXMLプロパティでDOMDocumentとして取得できます。
Dim http As Object Set http = CreateObject("MSXML2.XMLHTTP") http.Open "GET", "http://example.com/", False http.Send ' ダウンロード待ち Do While http.readyState <> 4 Loop ' 結果出力 Debug.Print http.responseText Set http = NothingIXMLHTTPRequest | MSDN