Как получить excel VBA, чтобы найти имя, а затем нажмите на гиперссылку

#html #excel #vba #internet-explorer

Вопрос:

Это та часть, на которой я застрял, все остальное работает.

 Sub Avidie()
Dim i As Long
Dim url As String
Dim ie As Object

Set ie = CreateObject("InternetExplorer.Application")

Set links = .document.getelementbyclass("invoice-number-hyperlink").getelementsbyname("25407")(0).Click
 

Я дошел до того, что у меня есть код веб-страницы, который приведен ниже, и я хочу, чтобы мой код нашел ссылку с этим классом и именем и щелкнул по ней. Как я могу это исправить?? Название класса совпадает во многих частях этой страницы, но я ищу именно это название, поэтому мне нужно найти его по этому.

 <a class="invoice-number-hyperlink" onclick="avid.navigateHelper['PAQ-Invoice'](this);" href="#/invoices/70c2373a-ac71-43f2-a9e0-8d0332f1a19b?fromQueue=true">25407</a>
 

Комментарии:

1. Попробуй getElementsByClassName("invoice-number-hyperlink")(0).click

2. Таким образом, существует несколько ссылок с этим именем класса. Мне нужно сделать это, используя имя.

3. У a тега, который вы перечислили, нет name свойства, значение 25407 , скорее всего, является внутренним текстом привязки. Вы можете зациклиться на элементе с классом invoice-number-hyperlink и проверить значение свойства innerText.

4. Является ли строка PAQ-Invoice уникальной для ссылки, по которой вы хотите перейти? Какие части отображаемого html уникальны для ссылки для перехода? Всегда ли ссылка находится в определенной позиции, например, 2-я ссылка в родительском теге?

5. @RyanWildry извините, я ТАК новичок в VBA idk, на что вы ссылаетесь, НО 25407-это внутренний текст… не могли бы вы, пожалуйста, сообщить мне, какие вещи, по вашему мнению, я должен изменить?

Ответ №1:

Основываясь на части предоставленного вами кода, а также на методах, упомянутых другими членами сообщества, вы можете просмотреть все подходящие s в соответствии с классом, отфильтровать в соответствии с текстовым содержимым, а затем выбрать и щелкнуть. Я создал простой пример, надеюсь, он может быть вам полезен:

 Dim appIE As InternetExplorerMedium

Set appIE = New InternetExplorerMedium
sURL = "https://www.example.com/"
With appIE
    .navigate sURL
    .Visible = True
End With

Do While appIE.Busy Or appIE.readyState <> 4
    DoEvents
Loop

'appIE.document.getElementsByClassName("invoice-number-hyperlink")(0).Click

For Each link In appIE.document.getElementsByClassName("invoice-number-hyperlink")
    If link.Text = "25407" Then
        link.Click
        Exit For
    End If
Next
 

И страница:

 <a class="invoice-number-hyperlink" onclick="window.alert('jump to google...')" href="https://www.google.com/">25407</a>