Я попытался протестировать ваш код на своей стороне и обнаружил, что он работает без проблем. Он генерирует данные для всех 93 URL.
Я сделал это на Windows 10 64-битной ОС с Excel 2016.
Вы можете увидеть значение переменной 'i', которое вы напечатали в консоли.
Я видел такую проблему с VBA IE код автоматизации застревает в строке ReadyState.
Чтобы подтвердить эту проблему, вы можете попытаться установить точку останова в своем коде, и вы заметите, что код будет постоянно l oop для ReadyState и никогда заканчивается.
Если вы попытаетесь запустить тот же код на любом другом компьютере, вы можете заметить, что код будет работать нормально. Например, код работает у меня.
Затем вы также можете попробовать протестировать с приведенными ниже примерами кода, чтобы увидеть, что любой из них работает для вас.
With objIE
Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
End With
'----------------OR---------------------------------------
Do While objIE.Busy = True
Loop
'----------------OR---------------------------------------
Do While objIE.readyState = 4: DoEvents: Loop
Do Until objIE.readyState = 4: DoEvents: Loop
While objIE.Busy
DoEvents
Wend
Если ничего не работает, попробуйте чтобы протестировать Application.wait еще несколько секунд.
Application.Wait (Now + TimeValue("0:00:05"))
Вы также можете сделать тест с функцией сна.
#If VBA7 Then ' Excel 2010 or later
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)
#Else ' Excel 2007 or earlier
Public Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As Long)
Sub demo()
For i = 0 To 10
DoEvents
Sleep 1000
Debug.Print i
Next i
End Sub
Полезная ссылка на поток:
internetexplorer.application висит на readystate = 1 в VBA