使用Excel VBA在两个具有相同TagName和InnerText的不同链接时如何单击所需的链接

时间:2019-05-01 17:36:33

标签: excel vba hyperlink

我正在尝试在VBA模块中获​​取代码以单击网页上的特定链接,但是有两个具有相同名称(“编辑”)的截然不同的链接,我似乎无法单击想要的那个链接选择(两个中的第二个)。

使用我当前拥有的代码,我可以访问第一个“编辑”链接,但是我需要访问第二个“编辑”链接。

这是我目前拥有的:

   Set AllHyperLinks = IE.document.getElementsByTagName("a")

        For Each hyper_link In AllHyperLinks

            If hyper_link.innerText = "Edit" Then
                hyper_link.Click
                Exit For

            End If
        Next

链接如下显示在页面源中:

第一个“编辑”链接

<a href="javascript:__doPostBack('ctl04$ctl00$ctl00$esbasegrid_$ctl02$ctl00','')">Edit</a>

第二个“编辑”链接( 我要单击的那个

<a href="javascript:__doPostBack('ctl04$ctl00$ctl01$esbasegrid_$ctl02$ctl00','')">Edit</a>

如上所述,我想单击第二个“编辑”链接,但是我的代码是单击第一个。

VBA相对较新,因此不胜感激!

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

    Dim i As Long
    Set AllHyperLinks = IE.document.getElementsByTagName("a")

    For Each hyper_link In AllHyperLinks
       Debug.Print "Link", hyper_link.innerText
       If hyper_link.innerText = "Edit" Then
            i = i + 1
            Debug.Print , "Edit Link #" & i
            If i = 2 Then
                Debug.Print , "Clicking...!"
                hyper_link.Click
                Exit For
            End If
        End If
    Next