Excel VBA从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()方法来确保它只能返回一个 HTML元素而不是一个对象集合:

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

然而,你得到""的原因很可能是由getElementsByClassName()返回的集合有多个元素(通常在通过类名检索对象时)。 这意味着:在浏览器的Document最有可能会有更多元素使用CSS类DescriptionLabel进行样式化; 例如,像这样的东西:

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

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

1)要么添加一个观察器到IE.Document.getElementsByClassName("DescriptionLabel") ;

2)或者,打印里面的所有元素,我敢打赌,你会发现我的帽子里面不止一个:

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

一般build议 :如果一个HTML对象有一个id ,使用getElementByID ; 该方法返回一个单一的对象,而不是一个集合,所以即使你确定该集合将包含一个独特的元素,反正在编码方面也不那么干净和高效。