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
; 该方法返回一个单一的对象,而不是一个集合,所以即使你确定该集合将包含一个独特的元素,反正在编码方面也不那么干净和高效。