VBAでテキスト要素からDOMを取って、さらにgetElementsByClassNameを使う方法

インターネット上のどこにも書いてなかったので、こちらに記載。

Dim InnerHtmlDom As IHTMLDocument7 'Here is the point
Set InnerHtmlDom = New HTMLDocument
InnerHtmlDom.Write (InnerHtml) 'Convert String to DOM
Debug.Print (InnerHtmlDom.getElementsByClassName("classname").Length)

いまのところ、writeとgetElementsByClassNameの組み合わせがうまくいくのは、IHTMLDocument7だけ。
If you are going to use both .write and .getElementsByClassName methods together in VBA, this is the only way, I think.

*追記(2014.7.29):「Windows 7 for x64-based Systems 用 Internet Explorer 11 の累積的なセキュリティ更新プログラム (KB2957689)」を適用した後にはうまく動かない場合があるようです。

カテゴリー: 未分類