如何使用vba识别html.getelementbyid(“string”)中的字符串?

时间:2014-07-02 14:54:17

标签: vba excel-vba excel

我正在尝试使用vba代码从另一个网站获取数据,但我不知道如何识别此语句中的括号内的字符串“with htm.getelementbyid(”comps-results“)。从括号中获取字符串,例如this网站

如果有人可以帮我解决这个问题,我将非常感激。

提前谢谢。

Sub GetData()
    Dim x As Long, y As Long
    Dim htm As Object

    Set htm = CreateObject("htmlFile")

    With CreateObject("msxml2.xmlhttp")
        .Open "GET", "http://www.zillow.com/homes/comps/67083361_zpid/", False
        .send
        htm.body.innerhtml = .responsetext
    End With

    With htm.getelementbyid("comps-results")
        For x = 0 To .Rows.Length - 1
            For y = 0 To .Rows(x).Cells.Length - 1
                Sheets(1).Cells(x + 1, y + 1).Value = .Rows(x).Cells(y).innertext
            Next y
        Next x
    End With

End Sub

1 个答案:

答案 0 :(得分:0)

getElementByID方法将唯一ID作为参数,如果有一个具有此ID值的HTML元素,则返回单个HTML元素。

您可能需要做的是使用getElementsByTagName方法,该方法返回匹配元素的集合。由于这可能导致多次匹配,我发现最好先创建一个对象,然后创建一个迭代器变量:

Dim compresults
Dim el

Set compresults = htm.getelementsbytagname("comps-results")
For each el in compresults
    MsgBox el.InnerText

Next
顺便说一句,我相当肯定(但尚未验证)HTMLElementCollection .Rows成员,因此代码中的下一行可能会引发错误。同样,.Rows 具有.Length属性,因此在该单行代码 AND 上至少有两个错误在下一行中,请注意.Cells 也有.Length成员,所以另一个错误。

为了帮助您解决代码的这些部分,我建议您提出一个新问题。这个答案解决了你原来的问题。