【问题标题】:How to get excel VBA to find a name then click the hyperlink如何让excel VBA找到一个名字然后点击超链接
【发布时间】:2021-10-22 07:14:07
【问题描述】:

这是我坚持的部分,其他一切正常。

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>

【问题讨论】:

  • 试试getElementsByClassName("invoice-number-hyperlink")(0).click
  • 所以该类名有多个链接。我需要用这个名字来做。
  • 您列出的a 标签没有name 属性,25407 的值很可能是锚点的 innerText。您可以循环使用 invoice-number-hyperlink 类的元素并检查 innerText 属性的值。
  • 字符串PAQ-Invoice对于您要点击的链接是唯一的吗?显示的 html 的哪些部分是要单击的链接所独有的?链接是否始终位于特定位置,例如父标签中的第二个链接?
  • @RyanWildry 对不起,我对 VBA 很陌生,我知道你指的是什么 a 标签,但是 25407 是内文......你能告诉我你说我应该改变哪些东西吗?

标签: html excel vba internet-explorer


【解决方案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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 2018-11-07
    • 1970-01-01
    • 2018-03-09
    相关资源
    最近更新 更多