【发布时间】:2020-10-09 12:28:44
【问题描述】:
我需要让 VBA 查看网站的 HTML,在文本中找到某个字符串,然后在 Excel 单元格中放置一个包含该字符串的值,以及该字符串左侧的 X 字符,例如 20以身作则。
例如,如果我需要在包含以下字符串的站点中查找字符串“elit”:
Lorem ipsum dolor sit amet,consectetur adipiscing elit。
代码需要将“sectetur adipiscing elit”值返回到指定单元格。即字符串本身,以及字符串左侧的 20 个字符。
这是我到目前为止的想法(我知道 .select 不是最佳做法,但它对我有用):
Sub String_Checker()
Sheets("Sheet1").Range("a2").Select
Dim IE As Object
Do Until IsEmpty(ActiveCell)
Set IE = CreateObject("internetexplorer.Application")
IE.Visible = True
IE.navigate "https://website.com"
Do Until (IE.readyState = 4 And Not IE.Busy)
DoEvents
Loop
Set objDoc = IE.document
strMyPage = objDoc.body.innerHTML
Dim s As String: s = ActiveCell.Offset(0, 1).Value
ActiveCell.Offset(0, 2).Value = Left(strMyPage, 20)
IE.Quit
ActiveCell.Offset(1, 0).Select
Loop
End Sub
这给了我 HTML 的最后 20 个字符,但我需要让代码开始“查看”指定的字符串,这在 Excel 中始终是 ActiveCell.Offset(0,1).Value。任何帮助,将不胜感激。谢谢!
【问题讨论】:
-
找到字符串后,你想在单元格中返回什么?找到的字符串的左边还是右边?
-
我认为你应该使用
innertext而不是innerhtml -
@VBasic2008:找到的字符串的左边部分,以及字符串本身。
-
请问有实际的网址吗?您是否使用字符串函数而不是 html 解析器,因为您正在处理不同的网页?
-
@QHarr:很遗憾,我无法提供具体的网站,因为它是保密的。虽然每次我要从中提取数据的网站都是相同的,但 URL 末尾的通配符会随着每次使用而改变。我已经在我的代码中考虑了这个通配符,因此脚本将导航到正确的网页。如果 HTML 解析器对您更有意义(这听起来确实是我应该使用的),我将不胜感激有关如何做到这一点的更多信息。