我想使用VBA为我打开一个网页(这个网页由带有数据单元格的HTML组成),查找一些关键字,然后通过电子邮件发送关键字以及上面和下面的一定数量的数据行关键字。要做到这一点,我需要能够找到关键字的位置(例如,第3行,第2列或第4行第4-10行等)。 Internet Explorer Library中是否有任何命令允许我这样做?到目前为止,我只有一个关键字的代码,它将转到关键字并选择/突出显示它。现在我需要找出如何在其上方/下方抓取一定数量的行并将其发送出去。
另外一个侧面问题:如果你知道一个很好的方法来修改我当前的代码来创建一个嵌套的循环来扫描整个网页,以及多个关键字,这将是非常有用的!
{{1}}
答案 0 :(得分:1)
如果您使用正则表达式查找您所在的文本和周围的文本,则可以继续使用已开始使用的方法。
就个人而言,我倾向于使用html对象来查找你之后的内容。下面是一些迭代通用表的示例代码:
Sub subFindScrollIE()
Dim strTemp() As Variant, output() As String, txt As String
Dim tr As HTMLTableRow, r As Integer, i As Integer
Dim tRows As IHTMLElementCollection
Dim xlR As Byte, c As Byte
Dim ie As InternetExplorerMedium
Set ie = New InternetExplorerMedium
ie.Visible = True
ie.Navigate "E:\Dev\table.htm"
strTemp = Array("abc", "mno", "vwx", "efg")
Do Until (ie.ReadyState = 4 Or ie.ReadyState = 3): Loop
Set tRows = ie.Document.body.getElementsByTagName("tr")
xlR = 2
' loop through rows
For r = 0 To tRows.Length - 1
Set tr = tRows(r)
' loop through search text
For i = 0 To UBound(strTemp)
' search row for string
txt = LCase(tr.innerHTML)
If (InStr(txt, LCase(strTemp(i))) > 0) Then
' search string found. split table data into array
txt = tr.innerHTML
txt = Replace(txt, "</td><td>", "~")
txt = Replace(txt, "<td>", "")
txt = Replace(txt, "</td>", "")
output = Split(txt, "~")
' populate cells from array
For c = 0 To UBound(output)
Sheet1.Cells(xlR, c + 2) = output(c)
Next c
xlR = xlR + 2
End If
Next i
Next r
ie.Quit
Set ie = Nothing
End Sub