Я пытаюсь получить данные с нескольких веб-страниц (разные стоковые страницы с одного сайта). Я могу получить данные, извлеченные за первые 3 раза выполнения цикла, но на 4-й итерации возникает ошибка 91: Переменная объекта или переменная блока не установлены.
Я попытался передвигаться по команде открытия Internet Explorer, чтобы она открывала новый браузер в начале каждой итерации и закрывала его в конце цикла, чтобы убедиться, что объект IE как-то не вышел из строя. Это не сработало, та же проблема.
Sub GetStock()
Dim ws As Worksheet: Set ws = ActiveSheet
Dim cellnum As Range: Set cellnum = Range(ActiveCell.Address)
Dim i As Integer
Dim IE As Object
Dim text As String
i = 1
Do Until i > 10
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
cellnum = Range(ActiveCell.Offset(i, 7).Address)
With IE
.navigate cellnum.Value
Do While .Busy And .readyState <> 4: DoEvents: Loop
Sleep 1000
text = .Document.getElementsByClassName("classname")(1).outerText
End With
ws.Cells(i, 12).Value = text
i = i + 1
IE.Quit
Loop
End Sub
Ссылки на веб-страницу хранятся внутри ячеек, отсюда и код ячейки. Находит правильную ячейку, извлекает веб-страницу внутри нее, затем переходит к ячейке под ней. Код работает отлично для первых 3 итераций, но по какой-то причине не работает на 4-й. Код ошибки определяет строку «text = .document.getElementsByClassName ...» как ошибку.