Пожалуйста, помогите выяснить, что не так с этим макросом - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть код ниже, который использует XML. Он просматривает все URL-адреса в столбце J, получает нужную информацию, а затем вставляет ее в столбец 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

UPDATE * Макрос теперь может работать. Я не знаю, почему он работает внезапно. Но он все еще не делает то, что должен. Например, если в столбце J 10 URL-адресов, макрос получит информацию из первого URL-адреса, а затем поместит ее во все строки в столбце K, а не просто помещает ее в соответствующую строку. Если значение из первого URL-адреса равно 80000, оно поместит 80000 во все 10 строк. Мало того, он будет переходить к следующему URL, а затем помещать новую информацию во все строки в столбце K, заменяя то, что он только что поместил туда. Это будет происходить до тех пор, пока он не пройдет весь 10-й URL.

1 Ответ

1 голос
/ 08 апреля 2019

Ваша проблема в том, что вы неправильно индексируете столбец 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:\\

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...