Excel VBA 从 Internet Explorer 复制标签值

Excel VBA copy the value of a label from Internet Explorer

我正在尝试从以下 html 代码

中检索值 "CONGE STATUTAIRE"
<span class="DescriptionLabel" id="lblProjectDescription">CONGE STATUTAIRE</span>

我试过了

nom_proj = IE.Document.getElementsByClassName("DescriptionLabel")(0).innerText  

代码毫无问题地通过了这一行,但是 nom_proj 的值为 " ",我希望得到 "CONGE STATUTAIRE" 作为结果。

谁能告诉我这是怎么回事?我的其余代码正在运行,即我可以使用 getelementbyID 方法检索值。

欢迎任何帮助。

我会使用 getElementById() 方法,以确保它可以 return 仅 一个 HTML 元素而不是对象集合:

nom_proj = IE.Document.getElementById("lblProjectDescription").innerText

但是,您得到 "" 的原因很可能是 getElementsByClassName() 编辑的集合 return 有多个元素(通常,当 class 检索对象时=] 名字)。 这意味着:在您的浏览器的 Document 中,将有 很可能 更多使用 CSS class DescriptionLabel 设置样式的元素;例如,像这样:

<div name="emptyRow" class = "DescriptionLabel"></div>

您可以通过以下方式测试是否有多个元素:

1) 或者,添加观察者到 IE.Document.getElementsByClassName("DescriptionLabel");

2) 或者,打印里面的所有元素,我打赌你会在里面找到不止一个:

For Each obj In IE.Document.getElementsByClassName("DescriptionLabel")
    Debug.Print obj.InnerText
Next obj

一般建议:如果 HTML 对象具有 id,请使用 getElementByID;该方法 return 是一个 单个 对象,而不是一个集合,因此即使您确定该集合将包含一个唯一元素,它在编码条款。