使用InStr()搜索HTML时出错

时间:2017-06-28 22:23:40

标签: excel vba excel-vba

我在搜索HTML代码时难以使用InStr()进行多行输入 - 这是我的代码的简化版本,其中的注释显示在debug.print上的错误:

Sub TestInStr()
Dim XMLPage As New MSXML2.XMLHTTP60
Dim html

XMLPage.Open "GET", "https://www.hltv.org/stats/matches/mapstatsid/48623/masterminds-vs-riotous-raccoons", False
XMLPage.send
If XMLPage.Status <> 200 Then MsgBox XMLPage.statusText
html = XMLPage.responseText

Dim str1, str2, str3, str4 As String

'Multi Line HTML
str1 = "<div class=""bold"">Breakdown</div>" & vbCrLf & "                    </div>" & vbCrLf & "                    <div class=""match-info-row"">" & vbCrLf & "                      <div class=""right"">"
str2 = "</div>" & vbCrLf & "                      <div class=""bold"">Team rating</div>"
Debug.Print InStr(html, str1) 'Cant find, value = 0 (Multi Line HTML)
Debug.Print InStr(html, str2) 'Cant find, value = 0 (Multi Line HTML)


'Single Line HTML
str3 = "<div class=""bold"">Breakdown</div>"
str4 = "<div class=""match-info-row"">"
Debug.Print InStr(html, str3) 'Found, value = 15503 (Single Line HTML)
Debug.Print InStr(html, str4) 'Found, value = 15208 (Single Line HTML)
End Sub

这是源HTML代码:

            <div class="bold">Breakdown</div>
            </div>
            <div class="match-info-row">
              <div class="right">0.91 : 1.27</div>
              <div class="bold">Team rating</div>

如图所示,当我尝试将多行HTML传递给InStr()时,它返回0,什么也没找到。但如果我通过将字符串分解为单行并重复来做同样的事情 - 它可以正常工作。

在搜索HTML并获得回报时,有什么方法可以将多行文本传递给InStr()?感谢

1 个答案:

答案 0 :(得分:2)

您可能需要使用thisvbCr代替vbLf来匹配vbCrLf。您可以使用\n来确定html源中换行符的用途。

希望有所帮助