【问题标题】:Excel VBA: using HTML DOMExcel VBA:使用 HTML DOM
【发布时间】:2013-03-30 16:38:57
【问题描述】:

我需要知道我可以通过 Excel VBA 使用 HTML 做什么。例如我知道我可以通过 id 找到元素 ie.document.getElementByID()。 我将使用没有带有 id 元素的 HTML 表格,因此我认为它看起来像 child->child->sibling->child.....

谁能给我看一部分代码,它会从这个示例表中得到文本“你好”?第一个节点将通过他的 ID 找到。

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

【问题讨论】:

  • 你的目标是什么?
  • 正如我所写。我需要找到在 Excel VBA 中使用 HTML 的完整手册。最好这将是普通凡人的形式(我不是编程大师;)
  • 这里是Microsoft DOM Reference 的链接。因为这并不是真的适合凡人,所以我不会将此作为答案发布;)祝你好运!
  • @grahamj42 谢谢。我需要这个用于 VBA。我知道它来自同一个“开发人员”(Microsoft :),所以,为了确定,它是同一件事吗?
  • 一旦加载了 HTML 文档,就可以像在客户端使用(例如)javascript 一样访问对象模型,因此您所要做的就是将概念映射到 VBA (这是简单的部分......)但是,正如 grahamj42 指出的那样,没有简单的“非程序员”方式进入所有这些。如果您遇到无法解决的特定问题,请尝试一些事情并回帖 - 使用代码。

标签: html excel internet-explorer vba dom


【解决方案1】:

我现在正在看这种类型的东西......

我相信像下面这样的事情应该这样做:

ie.getelementbyid("something").getelementsbytagname("TD")(3).innertext

它是如何工作的:

它会在 HTML 文档中搜索 ID 等于“某物”的元素(如果大于 1,将进行第一次迭代,但您可以循环遍历多个)。然后它将获取表格数据标签并转到文本所在的迭代 (3)(0 将等于第一个 TD)。

让我们知道这是否有效。

【讨论】:

  • 感谢发帖。看起来它应该可以工作。那是一年前的事,所以我无法尝试,我不记得我是如何解决那个问题的。大概是这样,但我真的不记得了。
【解决方案2】:

许多 HTML 文档在通用表中都有名称,而不是 ID

我通常使用如下所示的某种形式;

Set HTML = IE.Document
Set SomethingID = HTML.GetElementByID("something").Children
For Each TR in SomethingID
   If TR.TagName = "td" Then
      If TR.Name = "myname" Then
         'code in here if you are looking for a name to the element
      ElseIf TR.Value = "myValue" Then
         'Code in here if you are looking for a specific value
      ElseIf TR.innerText = "mytext" Then
         'more code in here if you are looking for a specific inner text
      End If
   End If
Next TR

【讨论】:

  • 请格式化您的代码并添加其剂量说明
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
  • 2017-09-13
  • 1970-01-01
相关资源
最近更新 更多