Ошибка 91 Использование For Loop с XMLHttpRequest VBA - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь очистить сайт от содержимого различных тегов HTML. Я использую массив тегов HTML против массива URL-адресов.

Sub pArse(UserForm4_HiddenList_Text)

Dim http As New XMLHTTP60
'Dim html As New HTMLDocument
Dim hero_true_Val As Integer
Dim down_var As Integer
Dim bill_array_redim
Dim element_tag As String
Dim address_count As Integer


        hero_true_Val = Application.WorksheetFunction.CountIf(Range("B:B"), True)
        down_var = 1
        bill_array_redim = Split(UserForm4_HiddenList_Text, Chr(10))

ReDim address_array(hero_true_Val)

For Z = 2 To 6
        If Sheets("resource").Cells(Z, 2).Value <> "False" Then
            address_count = address_count + 1
            address_array(address_count) = Sheets("resource").Cells(Z, 1).Value
        End If

Next Z



Sheets("Sheet1").Select

For url_stack = 0 To UBound(bill_array_redim)
    Sheets("sheet1").Cells(down_var, 1) = bill_array_redim(url_stack)

    For what_to_check = 1 To address_count


        With http
        .Open "GET", bill_array_redim(url_stack), False
        .send
        Do While http.readyState <> 4
        DoEvents
        Loop


        End With

                Dim html As New HTMLDocument
                With html
                .body.innerHTML = http.responseText
                ' the next line is where the error occurs 
                Sheets("Sheet1").Cells(down_var, 2).Value = .querySelector(address_array(what_to_check)).innerText
                End With

                down_var = down_var + 1

    Next what_to_check
Next url_stack

UserForm4.Hide
End Sub

Пользователь нажимает командную кнопку, которая затем передает массив URL-адресов (UserForm4_HiddenList_Text). Затем код проверяет наличие слова «true» на листе с именем «resource». Это создает массив терминов для проверки.

У меня проблема в том, что на второй итерации цикла what_to_check я получаю

ошибка 91: объект или переменная блока не установлена ​​

Я не уверен в том, в чем здесь проблема, и она возникает только в том случае, если я передам два тега html вместо одного.

edit: спасибо, что ответили Синди. Местоположение ошибки выделено жирным шрифтом. Сообщение «Объект или переменная блока не установлена».

1 Ответ

0 голосов
/ 15 мая 2018

Оказывается, мне выдавали ошибку, которую я не до конца понимал или не очень ясно понимал. Проблема заключалась в том, что в ответе не было тега, который я искал, так как его не было на сайте. Используя:

With html
         .body.innerHTML = http.responseText
         If .body.contains(.querySelector(tag_array(tag_array_index_no))) 
Then
        Sheets(1).Range(Cells(down_var, 2).Address).Value = 
 tag_array(tag_array_index_no)
        Sheets(1).Range(Cells(down_var, 3).Address).Value = 
.querySelector(tag_array(tag_array_index_no)).innerText
        Else
        Sheets(1).Range(Cells(down_var, 2).Address).Value = 
tag_array(tag_array_index_no)
        Sheets(1).Range(Cells(down_var, 3).Address).Value = 
tag_array(tag_array_index_no) + " not set."
        End If
        End With

Я могу проверить, существует ли тег в тексте ответа.

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