再次坚持= /
在网页上有一个表格,其中包含我正在VBA中编写内容的信息,以便将其拉入并放入我的Excel电子表格中。我的VBA在我的电子表格中引用我的A1数据并搜索每行的第一个td标记的innertext以进行匹配。我正在尝试做两件事:
查找具有与我的电子表格的A1值匹配的第一个td标记innertext的行。然后我想复制第二和第四个td标签innertext并将它们分别粘贴到单元格B1和C1中。
有些表会有多行,其中第一个td标记等于A1值。如果是这种情况,那么我想复制这些行中的每一行第二个td标签的innertext(总是一个数字),将它们加在一起并将结果粘贴到B1中。 (然后第4个td标签的innertext相同的东西,但粘贴到C1)。
我正在使用的HTML示例是:
<table class="grid" id="table1">
<tr class="gridHeader">
<td>Title1</td><td>Title2</td><td>Title3</td><td>Title4</td>
</tr>
<tr class="gridItem">
<td>Rw1CellA</td><td>Rw1CellB</td><td>Rw1CellC</td><td>Rw1CellD</td>
</tr>
<tr class="gridAlternatingItem">
<td>Rw2CellA</td><td>Rw2CellB</td><td>Rw2CellC</td><td>Rw2CellD</td>
</tr>
<tr class="gridItem">
<td>Rw1CellA</td><td>Rw1CellB</td><td>Rw1CellC</td><td>Rw1CellD</td>
</tr>
</table>
我第一部分试图写的VBA是:
Set myHist = IE.Document.getElementById("table1")
Set HistRw = myHist.getElementsByTag("tr")
Set RMScl = HistRw.getElementsByTag("td")
If RMScl.Item(0).innertext = Range("A1") Then
Range("B1") = RMScl.Item(1).innertext
Range("C1") = RMScl.Item(3).innertext
Else
Range("B1") = "0"
Range("C1") = "0"
End If
我的tr标签的Class更改是否会影响这个?
如果HTML中的任何td标记在括号内有其他信息,我是否可以使用.item()
? (例如
<td style="width:150px;">
<td align="right">
另外,关于我如何做我想做的第2部分的任何想法?
从评论中重写 这会更好:
Dim xobj As Object
Dim xobj1 As Object
Set xobj = IE.Document.getElementById("table1").getElementsByTagName("tr").Item(1)
Set xobj1 = xobj.getElementsByTagName("td").Item(0)
If Range("A1").Value = xobj1.innertext Then
Range("B1").value = xobj.getElementsByTagName("td").Item(1).innertext
Range("C1").value = xobj.getElementsByTagName("td").Item(3).innertext
End If