在网页中搜索文本,如果没有找到则跳到下一个单词

时间:2016-06-13 07:40:08

标签: html excel vba

我正在使用vba从网站中的excel搜索文本。问题是该网站没有任何源代码可以直接在那里搜索,因此我使用sendkeys进行搜索。

是否有任何替代搜索没有源代码,因为如果在网页中找不到文本,我就无法跳过搜索条件。 如果在网页中找不到文本,我希望代码跳到下一个单词。

以下是代码:

   With iedoc.forms(0)
    ActiveSheet.Range("H5").Copy
SendKeys "^f", True
SendKeys "^v", True
SendKeys "{TAB}", True
Application.Wait Now + TimeSerial(0, 0, 1)
SendKeys "{TAB}", True
Application.Wait Now + TimeSerial(0, 0, 1)
SendKeys "^{ }", True
ActiveSheet.Range("H6").Copy
SendKeys "^f", True
SendKeys "^v", True
SendKeys "{TAB}", True
Application.Wait Now + TimeSerial(0, 0, 1)
SendKeys "{TAB}", True
Application.Wait Now + TimeSerial(0, 0, 1)
SendKeys "^{ }", True
End With

1 个答案:

答案 0 :(得分:0)

您可以获取所有文本(假设iedoc被定义为IE文档)

sText = iedoc.Body.Innertext ' get all the text from the browser

然后你把它放在内存中,可以根据需要用InStr来检查单词吗?

例如,要检查Cell“H5”的值,您可以执行以下操作:

If (Instr(sText, ActiveSheet.Range("H5").Value)>0 Then
    MsgBox ActiveSheet.Range("H5").Value & " was found in the text!"
End If

我建议不要使用ActiveSheet,因为它可以根据当时处于活动状态的工作表轻松更改,而您的代码可能会查看错误的选项卡。总是更好地定义您正在查看的工作表并直接引用它:

Dim ws as Worksheet : Set ws = ThisWorkbook.Worksheets("mySheetNameHere")

然后,您可以确保您的代码始终引用您想要的工作表:

If (Instr(sText, ws.Range("H5").Value)>0 Then
    MsgBox ws.Range("H5").Value & " was found in the text!"
End If