Я пытаюсь автоматизировать ввод транспортного средства Reg в программу проверки .gov MOT.
1-й раз, когда я запускаю его без перерыва в коде, прежде чем он вводит Reg, я получаю ошибку «Ошибка времени выполнения 424 Требуется объект», и это относится к строке
objIE.Document.getElementById ("Vrm"). Значение = strReg
Если я запускаю его снова, игнорируя предыдущую ошибку и оставляя первое окно, то есть открытое, довольно часто, тогда оно работает.
Если я вставлю разрыв в код перед тем, как он попытается ввести данные в текстовое поле, он всегда будет работать. Это, очевидно, ошибка синхронизации, но я не знаю, как проверить, что дальше, то есть полностью загружено, я предполагал, что READYSTATE_COMPLETE будет делать то, что говорит на жестяной коробке?
Любые указатели будут с благодарностью.
TIA Andrew
Полный код ниже
Public Function SearchBot(strReg As String)
'dimension (declare or set aside memory for) our variables
Dim objIE As InternetExplorer 'special object variable representing the IE browser
Dim aEle As HTMLLinkElement 'special object variable for an <a> (link) element
Dim y As Integer 'integer variable we'll use as a counter
Dim result As String 'string variable that will hold our result link
' Dim htmlDoc As HTMLDocument
'initiating a new instance of Internet Explorer and asigning it to objIE
Set objIE = New InternetExplorer
Dim strSource As String
'make IE browser visible (False would allow IE to run in the background)
objIE.Visible = True
'navigate IE to this web page (a pretty neat search engine really)
objIE.Navigate "https://vehicleenquiry.service.gov.uk/"
'objIE.navigate "https://www.check-mot.service.gov.uk/"
'wait here a few seconds while the browser is busy
Do While objIE.Busy = True Or objIE.ReadyState <> READYSTATE_COMPLETE: DoEvents: Loop
'in the search box put Registration number in the entry box
objIE.Document.getElementById("Vrm").Value = strReg
' Sheets("Sheet1").Range("A2").Value & " in " & Sheets("Sheet1").Range("C1").Value
'click the 'go' button
'wait again for the browser
objIE.Document.getElementsByName("Continue")(0).Click
Do While objIE.Busy = True Or objIE.ReadyState <> 4: DoEvents: Loop
objIE.Document.getElementById("Correct_True").Click
objIE.Document.getElementsByName("Continue")(0).Click
GoTo SubExit
'close the browser
objIE.Quit
SubExit:
'exit our SearchBot subroutine
End Function