Что я понял, что в дополнение к тому, что уже было достигнуто в коде, вам может потребоваться только сохранить скриншот сайта и просмотреть количество регистрационных номеров автомобилей (уже перечисленных в листе Excel).Также не смог понять и нашел закомментированный идентификатор класса ("top-section-list")
на конкретном сайте.
Поскольку у меня нет действительных регистрационных номеров транспортных средств в Великобритании, я пробовал код только с каким-то мнимым номером (к счастью, найден впробная ошибка) и повторяется в цикле. Путь, листы, диапазон и т. д. могут быть изменены по вашему требованию.Время ожидания приложения может быть дополнительно уменьшено.
Модифицированный код:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const VK_SNAPSHOT As Byte = 44
Private Const SW_SHOWMAXIMIZED = 3
Sub TAXandMOT()
Dim objIE As InternetExplorer
Dim y As Integer
Dim CarReg As String
Dim hwnd As Long, IECaption As String
Dim TaxExpiryDate, MotExpiryDate
Dim Shp As Shape, Cht As Chart, Ws As Worksheet
Dim Path As String
Path = "C:\users\user\Desktop\"
Set Ws = ThisWorkbook.Sheets("Input Data")
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
y = 1
CarReg = Ws.Range("A" & y).Value
Do While CarReg <> ""
objIE.navigate "https://vehicleenquiry.service.gov.uk/"
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
Application.Wait Now + TimeValue("00:00:05")
objIE.document.getElementById("Vrm").Value = CarReg
objIE.document.getElementsByClassName("button")(0).Click
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
Application.Wait Now + TimeValue("00:00:05")
objIE.document.getElementById("Correct_True").Click
objIE.document.getElementsByClassName("button")(0).Click
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
Application.Wait Now + TimeValue("00:00:05")
TaxExpiryDate = objIE.document.getElementsByClassName("status-bar")(0).getElementsByTagName("strong")(0).innerText
TaxExpiryDate = Split(TaxExpiryDate, vbNewLine)(1)
Ws.Range("B" & y).Value = TaxExpiryDate
MotExpiryDate = objIE.document.getElementsByClassName("status-bar")(0).getElementsByTagName("strong")(1).innerText
MotExpiryDate = Split(MotExpiryDate, vbNewLine)(1)
Ws.Range("C" & y).Value = MotExpiryDate
'SendKeys "(%{1068})" 'another option to take screen Shot
ShowWindow objIE.hwnd, SW_SHOWMAXIMIZED
Delay 3
Call keybd_event(VK_SNAPSHOT, 0, 0, 0)
Delay 1
Set Cht = Charts.Add
Cht.Paste
Cht.Export FileName:=Path & CarReg & y & ".jpg", FilterName:="JPG" ' may not use y (i have to use Y as I have only one car no to repeat for trial)
Application.DisplayAlerts = False
Cht.Delete
Application.DisplayAlerts = True
y = y + 1
CarReg = Ws.Range("A" & y).Value
Loop
objIE.Quit
End Sub
Sub Delay(Sec As Integer)
tm = Timer
Do While Timer < tm + Sec
DoEvents
Loop
End Sub