我下面有一个使用xml的代码。 它访问J列中的所有URL,获取我想要的信息,然后将其粘贴到K列中。但是,该代码似乎不起作用。我不知道为什么。 你们可以帮忙吗? 预先感谢。
Sub GetInfo()
Dim Http As New XMLHTTP60, Html As New HTMLDocument
Dim lastrow As Long, i As Long
Dim sdd As String
Dim add As Variant
Dim url As Range
For Each url In Range("J2:J" & Range("J" & Rows.Count).End(xlUp).Row)
lastrow = Sheet1.Cells(Rows.Count, "J").End(xlUp).Row
For i = 2 To lastrow
With Http
.Open "GET", url, False
.send
Html.body.innerHTML = .responseText
End With
sdd = Html.querySelector("span[itemprop='price']").getAttribute("content")
Sheet1.Cells(i, "K") = sdd
Next i
Next
End
End Sub
更新* 宏现在可以运行。我不知道为什么它突然运行。 但是它仍然没有按照预期的那样做。 因此,就像J列中有10个URL一样,宏将从第一个URL获取信息,然后将其放在K列的所有行中,而不仅仅是将其放在其相应行中。如果第一个URL的值是80000,则它将在所有10行上放置80000。不仅如此,它将移至下一个URL,然后通过替换刚放置在K列中的所有行,将新信息放置在K列中的所有行上。这样做会一直到第十个URL。
答案 0 :(得分:1)
您的问题是您没有正确索引到K
列中。您有一个For I
循环,该循环对每个URL重复。因此,最后一个URL将填充所有K
列条目。也许像这样:
…
i = 1
Columns("K").Clear
For Each URL In Range(Cells(2, "J"), Cells(Rows.Count, "J").End(xlUp))
With Http
.Open "GET", URL, False
.send
HTML.body.innerHTML = .responseText
End With
sdd = HTML.querySelector("span[itemprop='price']").getAttribute("content")
i = i + 1
Sheet1.Cells(i, "K") = sdd
Next URL
End Sub
哦,请确保您的URL格式完整:例如,它们以http:\\
或https:\\
开头