有谁能给我看一下VBA代码的一部分,它将从这个示例的在线HTML表中获得文本“hello”?第一个节点将通过他的ID(ID=“something”)找到。

...
<table id="something">
  <tr>
    <td><TABLE><TR><TD></TD></TR><TR><TD></TD></TR></TABLE></td><td></td>
  </tr>
  <tr>
    <td></td><td></td><td>hello</td>
  </tr>
...

我想会有点像child->sibling->child->sibling->sibling->child,但我不知道确切的方式。
编辑
更新的代码标签是大写字母。所以如果我使用getElemenetsById("something").getElemenetsByTagName('tr')它只能收集两个tr标记,或者四个(带有更深的子标记)?

最佳答案

如果你确实在寻找答案,下次你可能会想扩大你的范围。有很多关于DOM和VBA的问题和答案。
Use getElementById on HTMLElement instead of HTMLDocument
虽然问题(和答案)并不完全是你想要的,但它会告诉你如何创建一些你可以使用的东西。
您需要使用getElementById()getElemenetsByTagName()的混合来检索所需的“hello”
例如:Document.getElementById("something").getElementsByTagName("tr")(1).getElementsByTagName("td")(2).innerText
获取元素“something”
在“something”内部获取所有“tr”标记(特别是索引1处的标记)
在返回的tr标记中获取所有“td”标记(特别是索引2处的标记)
获取上一个结果的内部文本
这些对象使用基于0的数组,因此第一个项是项(0)。
更新
document.getElementById()将返回一个(奇异的)IHTMLILL元素(它将包含所有的子元素)或者如果没有,则No/NULL。
document.getElementsByTagName()将返回一个IHTMLElement的集合(同样,每个元素将包含其所有子元素)。(或空集合,如果不存在)
document.getElementsByTagName("tr")这将返回“document”元素中的所有tr元素。
document.getElementsByTagName("tr")(0)将返回集合中的第一个(单数)IHTMLElement。(注意末尾的索引?)
在VBA中找不到InternetExplorer对象的“sibling”特性,因此您必须使用子索引手动执行。
使用DOM函数是最简单的方法。它比仅仅查看一个链式“Element.Children(0)、Children(1)、Children(2)”要清晰得多,因为如果不手动查找索引,您不知道索引的含义。

10-08 02:57