我在HTML中使用此代码:
<table cellspacing = "0" cellpadding = "0" width = "100%" border="0">
<td class="TOlinha2"><span id="Co">140200586125</span>
我已经拥有访问网站的VBA功能,登录并转到右侧页面。现在,我尝试在HTML中的表格中使用td
标记。我想要的值是140200586125
,但是我想要很多td
个标签,所以我打算使用for循环来获取这些td
并将它们放在工作表中。
我试过了两个:
.document.getElementByClass()
和
.document.getElementyById()
但都没有奏效。
感谢帮助。我来自巴西,对于任何英语错误都很抱歉。
答案 0 :(得分:1)
由于您提到需要检索多个<td>
标记,因此检索整个集合更有意义,而不是使用getElementById()
一次一个地获取它们。
根据您的上述HTML,这会将<span>
中的所有<td>
个节点与class='TOlinha2'
匹配:
Dim node, nodeList
Set nodeList = ie.document.querySelectorAll("td.TOlinha2 > span")
For Each node In nodeList
MsgBox node.innerText ' This should return the text within the <span>
Next
答案 1 :(得分:1)
没有足够的HTML来确定TOlinha2
是否是感兴趣的表中所有tds的一致类名;并仅限于此表。如果是,那么你确实可以使用.querySelectorAll
您可以使用CSS selector:
ie.document.querySelectorAll(".TOlinha2")
"."
代表className。
您无法使用For Each Loop
迭代返回的NodeList。请参阅我的问题Excel crashes when attempting to inspect DispStaticNodeList。 Excel将崩溃,您将丢失所有未保存的数据。
你必须循环nodeList的长度,例如
Dim i As Long
For i = 0 To Len(nodeList) -1
Debug.Print nodeList(i).innerText
Next i
有时你需要不同的语法:
Debug.Print nodeList.Item(i).innerText
您可以尝试使用更多符合条件的元素进一步缩小此CSS选择器,例如,元素必须位于tbody内,即table
,并且前面有tr
(表格行)并且具有类名.TOLinha2
ie.document.querySelectorAll("tbody tr .TOlinha2")