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 是一个 单个 对象,而不是一个集合,因此即使您确定该集合将包含一个唯一元素,它在编码条款。
我正在尝试从以下 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 是一个 单个 对象,而不是一个集合,因此即使您确定该集合将包含一个唯一元素,它在编码条款。