vba搜索xml结果并将特定信息拉入excel

时间:2016-04-29 21:39:45

标签: excel vba excel-vba

我正试图将Zillow的信息提取到excel表中 我在A列中有一个属性列表,格式为zillows所需格式,可通过其API进行输入。我希望我的代码为我的列中的每个属性运行,并将Zpid和Zestimate返回到J和K列中的表中。我已经开始使用以下内容,其中AA范围是我连接地址的地方,如上所述合并Zillows所需的字符串。我不确定它是否正在通过列,因为当我使用Msg.Box Http.ResponseText我不认为它是一个字符串。但是当我手动输入url时,返回的代码(见下文)就会出现。

    Private Sub btnRefresh_Click()
 Dim W As Worksheet: Set W = ActiveSheet
 Dim Last As Integer: Last = W.Range("aa300").End(xlUp).Row
 Dim Purported As String
 Dim i As Integer
 For i = 2 To Last
    Purported = Purported & W.Range("AH" & i).Value & "+"
 Next i
 Purported = Left(Purported, Len(Purported) - 1)

 Dim URL As String: URL =  "http://www.zillow.com/webservice/GetSearchResults.htm?zws-id=X1-ZWz1f9iajlak23_7kib9&address=" & Purported
 Dim Http As New WinHttpRequest
 Http.

我在浏览器中测试它并返回以下内容:

<zpid>88964519</zpid>
<links>
<homedetails>
http://www.zillow.com/homedetails/7736-SE-72nd-Ave-Portland-OR-    97206/88964519_zpid/
</homedetails>
<graphsanddata>http://www.zillow.com/homedetails/7736-SE-72nd-Ave-Portland-OR-97206/88964519_zpid/#charts-and-data
</graphsanddata>
<mapthishome>http://www.zillow.com/homes/88964519_zpid/</mapthishome>
<comparables>http://www.zillow.com/homes/comps/88964519_zpid/</comparables>
</links>
<address>
<street>7736 SE 72nd Ave</street>
<zipcode>97206</zipcode>
<city>Portland</city>
<state>OR</state>
<latitude>45.467339</latitude>
<longitude>-122.589271</longitude>
</address>
<zestimate>
<amount currency="USD">243161</amount>

我想将“Zpid”和“Zestimate”导入我的电子表格 每个

我是这个代码的新手并且正在努力学习。感谢我得到的任何帮助。谢谢,

1 个答案:

答案 0 :(得分:0)

解决这个问题的方法可能有很多种,而且不清楚哪个部分会给你带来麻烦。也就是说,这是我的子程序示例,它找到了Zpid和Zestimate给出的有效地址字符串。希望它有所帮助:

  

以下代码要求将Microsoft XML添加到VBAProject引用中。

Sub Zillow(addressPart As String)
    Dim httpRequest As MSXML2.XMLHTTP, xmlParser As MSXML2.DOMDocument
    Set xmlRequest = New MSXML2.XMLHTTP
    Set xmlParser = New MSXML2.DOMDocument

    requestURL = "http://www.zillow.com/webservice/GetSearchResults.htm?zws-id=X1-ZWz1f9iajlak23_7kib9&address=" & addressPart

    xmlRequest.Open "GET", requestURL, False
    xmlRequest.Send

    xmlParser.LoadXML xmlRequest.responseText

    Zpid = xmlParser.SelectSingleNode("//zpid").Text
    Zestimate = xmlParser.SelectSingleNode("//zestimate/amount").Text
End Sub

这应该将Zpid和Zestimate值放入这些变量中。显然,您必须进行一些修改才能通过所有数据循环,并填写相应的单元格。