答えを検索した場合は、次回は範囲を広げたいと思うかもしれません。DOM や VBA に関する質問と回答がたくさんあります。
HTMLDocument の代わりに HTMLElement で getElementById を使用する
質問 (および回答) は、まさにあなたが望むものではありませんが、作業できるものを作成する方法を示します。
目的の「こんにちは」を取得するにはgetElementById()
、 とを組み合わせて使用する必要があります。getElemenetsByTagName()
例えば:Document.getElementById("something").getElementsByTagName("tr")(1).getElementsByTagName("td")(2).innerText
- 要素「何か」を取得する
- 「something」内ですべての「tr」タグを取得します (具体的にはインデックス 1 のタグ)。
- 返された tr タグ内で、すべての「td」タグ (具体的にはインデックス 2 のタグ) を取得します。
- 前の結果の innerText を取得します
これらのオブジェクトは 0 ベースの配列を使用するため、最初の項目は item(0) です。
アップデート
document.getElementById()
(単一の) IHTMLElement (そのすべての子を含む)を返すか、存在しない場合は何も返さないか null を返します。
document.getElementsByTagName()
IHTMLElementのコレクションを返します (ここでも、各要素にはそのすべての子が含まれます)。(存在しない場合は空のコレクション)
document.getElementsByTagName("tr")
これにより、「document」要素内のすべての tr 要素が返されます。
document.getElementsByTagName("tr")(0)
コレクションから最初の(単数形の) IHTMLElementを返します。(末尾のインデックスに注意してください。)
VBA には InternetExplorer オブジェクトの「兄弟」機能がない (私が見つけた) ので、子インデックスを使用して手動で行う必要があります。
DOM 関数を使用することは、それを行うためのクリーンな方法です。チェーン「Element.Children(0).children(1).children(2)」を見るよりもはるかに明確です。手動で調べないとインデックスの意味がわからないからです。