Несколько замечаний:
1) Вам необходимо использовать правильную строку ожидания в своем коде:
While ie.Busy Or ie.readyState < 4: DoEvents: Wend
2) Кнопка отправки имеетидентификаторОбычно это самый быстрый метод поиска, поэтому используйте его.
ie.document.querySelector("#submit").click
3) Используйте идентификаторы везде, где это возможно.Например, при вводе начального поискового номера
ie.document.querySelector("#sourceNumbers").value = ThisWorkbook.Sheets("Sheet1").Range("B1").value
4) Наиболее актуальный метод навигации:
ie.navigate2
5) Всегда иметь другую строку ожидания после .click
или .submit
, чтобы разрешить странице загружать новое содержимое
6) Всегда не забывайте .Quit
приложению предотвращать продолжение процессов и потенциально приводить к нехватке системных ресурсов.
Public Sub FillForm()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.Navigate2 "https://www.morovia.com/bulk-check-digit-calculation/index.php"
While .Busy Or .readyState < 4: DoEvents: Wend
.document.querySelector("#sourceNumbers").Value = ThisWorkbook.Sheets("Sheet1").Range("B1").Value
.document.querySelector("#submit").Click
While .Busy Or .readyState < 4: DoEvents: Wend
Debug.Print .document.querySelector("#results").Value
.Quit
End With
End Sub
Цикл по ссылкам в столбцах A может выглядеть следующим образом:
Option Explicit
Public Sub LoopLinks()
Dim ie As Object, ws As Worksheet, arr(), i As Long
Set ws = ThisWorkbook.Worksheets("Sheet1")
Set ie = CreateObject("InternetExplorer.Application")
arr = Application.Transpose(ws.Range("A1:A3").Value) '<== amend range as required
With ie
.Visible = True
For i = LBound(arr) To UBound(arr)
If InStr(arr(i, 1), "http") > 0 Then '<=check is an URL
.Navigate2 arr(i)
While .Busy Or .readyState < 4: DoEvents: Wend
'do something......
End If
Next
.Quit
End With
End Sub