调用具有单元格名称的字符串变为空,但如果我直接使用字符串,则它可以工作

时间:2018-06-15 09:29:21

标签: regex excel vba excel-vba

如果我调用这样的值,它就会起作用:

=GetElementByRegex(D2;"<a href=""/StatWeb/Field/Index/15"">(.*?)</a>")

但如果我用单元格名称来称呼它,就像这样,它不会:

=GetElementByRegex(D2;L2) (L2 is "<a href=""/StatWeb/Field/Index/15"">(.*?)</a>")

它返回空值....

或者是否有替代方案我可以用一个单元名称(例如F4)替换索引号(Index / 15)。

我是新人。

我在后面使用的代码就是这个。

Public Function GetElementByRegex(url As String, reg As String)
    Dim XMLHTTP As Object, html As Object, objResult As Object
    Set XMLHTTP = CreateObject("MSXML2.serverXMLHTTP")
    XMLHTTP.Open "GET", url, False
    XMLHTTP.setRequestHeader "Content-Type", "text/xml"
    XMLHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0"
    XMLHTTP.send
    Set html = CreateObject("htmlfile")
    html.body.innerHTML = XMLHTTP.ResponseText
    Set regEx = CreateObject("VBScript.RegExp")
    regEx.Pattern = reg
    regEx.Global = True
    If regEx.Test(XMLHTTP.ResponseText) Then
        Set matches = regEx.Execute(XMLHTTP.ResponseText)
        GetElementByRegex = matches(0).SubMatches(0)
        Exit Function
    End If
    GetElementByRegex = ""
End Function

1 个答案:

答案 0 :(得分:1)

当你将"放在范围内时,它会使它们加倍,以呈现一个字符串。请参见屏幕截图:

enter image description here

因此,删除它们应该有效。