Попробуйте использовать метод querySelector и селектор [attribute^=value]
CSS , он выберет каждый элемент, значение атрибута href которого начинается со специального значения.
Пример кода, как показано ниже ( он выберет тэг, значение атрибута href которого начинается с website/report/download.json
):
Public Sub ClickTest()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.Navigate2 "<the website url>"
While .Busy Or .readyState <> 4: DoEvents: Wend
ie.Document.querySelector("a[href^='website/report/download.json']").Click
End With
End Sub
Кроме того, вы также можете найти тэг, используя метод getelementsbytagname, а затем с помощью for для l oop через результат и в соответствии со свойством innerText найти специальную ссылку. Наконец, щелкните по нему.
Редактировать
Вы можете проверить следующий код:
Public Sub ClickTest()
Dim ie As Object
Dim itemlist As Object 'Define a object to store the a tag list.
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.Navigate2 "<the website url>"
While .Busy Or .readyState <> 4: DoEvents: Wend
'ie.Document.querySelector("a[href^='website/report/download.json']").Click
Set itemlist = ie.document.getElementsByTagName("a")
'Debug.Print itemlist.Length ' check the count of a tag
If Len(itemlist) > 0 Then
'using For Each statement to loopthough the a tag list.
For Each Item In itemlist
'Debug.Print Item.innerText ' check the value
'If the value is "GeneralExtract.xlsx", click the link and exit the for statement.
If Item.innerText Like "GeneralExtract.xlsx" Then
Item.Click
Exit For
End If
Next Item
End If
End With
End Sub