首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA在不同的关键短语之前查找短语的最后一个实例?

VBA在不同的关键短语之前查找短语的最后一个实例?
EN

Stack Overflow用户
提问于 2012-07-10 23:05:50
回答 2查看 514关注 0票数 0

我有一个来自HTML源代码的大字符串(大约1,000,000个字符)。我正在使用msinet.ocx查看来自适当网站的文本。我写了一小段代码,以便找到出现在不同关键短语(“组件附件矩阵”)之前的关键短语("pkid="),但它不能正常工作。这就是我现在所拥有的:

代码语言:javascript
复制
workbench = Cells(columnNumber, 1).Value
myURL = "http://beams.us.yazaki.com/Beams/ViewDetails.aspx?topic=document&pkid=" _
& workbench
Dim inet1 As Inet
Dim mypage As String

Set inet1 = New Inet
With inet1
    .Protocol = icHTTP
    .URL = myURL
    mypage = .OpenURL(.URL, icString)
End With

CAMnum = InStr(mypage, "Component Accessory Matrix")
intStart = InStrRev(mypage, "pkid=", CAMnum) + 5
newnum = Mid(mypage, intStart, 6)
Cells(columnNumber, 2).Value = newnum

问题似乎出在mypage = .OpenURL(.URL, icString)上;当我运行len(mypage)时,它返回的值大约是100,000,而实际上它应该返回的值大约是100,000。有人能解释一下吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-10 23:43:36

使用InStrInStrRev,找到您的字符串,然后向后查找。一旦你有了那个位置,向前看,直到我们找到引号字符。最后,使用这些位置来获取字符串

代码语言:javascript
复制
pos1 = InStrRev(YourXMLString, "pkid=", InStr(YourXMLString, "Component Accessory Matrix")) + 5 ' length of "pkid="
pos2 = InStr(pos1, YourXMLString, Chr(34)) ' Chr(34)="
FoundString = Mid$(YourXMLString, pos1, pos2 - pos1)

请注意,如果"Component Accessory Matrix“缺失,或者前面没有" pkid=”,或者引号不是分隔符,或者pkid=和引号之间有更多的文本,代码将失败和/或产生无意义的结果。

票数 1
EN

Stack Overflow用户

发布于 2012-07-11 00:18:39

使用HTML DOM。

  • 将文本加载到HTML文档中:

Dim html As Object‘MSHTML.HTMLDocument Set html = CreateObject("htmlfile") html.body.innerHTML = "your HTML code here“

  • 使用getElementsByTagName获取td元素的集合:

Dim tdElements As Object‘MSHTML.IHTMLElementCollection Set tdElements = html.getElementsByTagName("td")

  • 循环遍历它们,直到找到内部文本为"Component Accessory Matrix“的元素,然后抓取前一个td元素的内部文本。

Dim tdElement As Object‘MSHTML.IHTMLElement Dim i As String As string If i=1 to tdElements.Count If tdElements.Item(i).innerText = "Component Accessory Matrix“Then’get previous Set tdElement = tdElements.Item(i - 1) textToParse = tdElement.innerText Exit For End If Next I

  • 使用传统方法

解析字符串

我将用=拆分得到的字符串并获取第二个元素,然后用"拆分该字符串并获取第一个元素。那就只剩下300451了。

Here's a further example if you need it

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11416301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档