我正在使用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
答案 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