ローカルに保存したHTMLファイルのソースから、Excel VBAでデータを抜き出したいと考えテストしてみました。
難点があるのですが、ご紹介しておきます。
MSHTML.HTMLDocumentを使ってHTMLファイルのソースを取得するサンプルマクロ
Microsoft HTML Objet Libraryへの参照設定を行い、
Cドライブのtempフォルダーにsample.htmlを用意しておいてから以下のExcelマクロを実行すると、(一応)イミディエイトウィンドウにソースコードの内容が出力されます。
ただし、処理が終わるまで、かなり待つ場合があるのが難点です。
Dim html As MSHTML.HTMLDocument
Set html = New MSHTML.HTMLDocument
Dim doc As MSHTML.IHTMLDocument2
Set doc = html.createDocumentFromUrl("file:///C:\temp\sample.html", "")
Do Until doc.readyState = "complete"
DoEvents
Debug.Print "実行中"
Loop
Debug.Print doc.body.innerHTML
Set doc = Nothing
Set html = Nothing
End Sub
サンプルマクロで行っている処理
MSHTML.HTMLDocumentオブジェクトへの参照を取得してから、
Dim html As MSHTML.HTMLDocument Set html = New HTMLDocument
MSHTML.HTMLDocument.createDocumentFromUrlメソッドで、
ローカルに保存したHTMLファイルを表す、MSHTML.IHTMLDocument2オブジェクトを取得しています。
Dim doc As MSHTML.IHTMLDocument2 Set doc = html.createDocumentFromUrl("file:///C:\temp\sample.html", "")
その後、HTML.IHTMLDocument2.readyStateプロパティが、
文字列「complete」を返すまで処理を待機します。
Do Until doc.readyState = "complete" DoEvents Debug.Print "実行中" Loop
この部分の処理が、何故か時間がかかってしまうので、イミディエイトウィンドウに「実行中」と文字列を出力し続けています。
TML.IHTMLDocument2.readyStateプロパティが「complete」を返してきたら、MSHTML.IHTMLElement.innerHTMLプロパティが返す文字列を
イミディエイトウィンドウに出力しています。
Debug.Print doc.body.innerHTML
最終更新日時:2024-11-20 04:46
Home » エクセルマクロ・Excel VBAの使い方 » MSHTML.HTMLDocumentを使ってHTMLファイルのソースを取得するExcelマクロ