请帮助找出此宏出了什么问题

时间:2019-04-08 08:17:54

标签: excel vba

我下面有一个使用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。

1 个答案:

答案 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:\\开头