VBA单击IE上的按钮

时间:2018-02-16 13:34:33

标签: excel-vba internet-explorer vba excel

我经常使用VBA,但在IE自动化方面,我还是初学者。 我需要创建一个代码来点击我公司特定网站上的“按钮”。 这个按钮打开一个小菜单,我需要选择一些东西(我稍后会讨论)。事实是,按钮没有显示任何ID或名称,它是一个跨度,我无法点击它。 当我按下F12并检查按钮上的元素时,下面是HTML:

 <span class="search_for_watchers">
 <a href="/watchers/new?project_id=pendencia" data-method="get" data-remote="true">Procurar por outros observadores para adiconar</a>
 </span>

我已经尝试过很多通过互联网找到的建议..我已经尝试通过ID,名称,类名等获取元素,但没有成功。 以下是我正在使用的代码:

Sub Automate_IE_Load_Page()
    Dim i As Long
    Dim URL As String
    Dim ie As Object
    Dim objElement As Object
    Dim objCollection As Object

    Set ie = CreateObject("InternetExplorer.Application")

    ie.Visible = True

    URL = "Examplesite.com"

    ie.Navigate URL

    Application.StatusBar = URL & " is loading. Please wait..."

    Do While ie.READYSTATE = 4: DoEvents: Loop
    Do Until ie.READYSTATE = 4: DoEvents: Loop

    Application.StatusBar = URL & " Loaded"

    botao = ie.Document.getElementsByClassName("search_for_watchers")
    botao.Click
End Sub

它没有显示任何错误..它只是没有打开我想要的子菜单,因此没有点击按钮。

谢谢!

3 个答案:

答案 0 :(得分:1)

你在这里输入两次无限循环:

Do While ie.READYSTATE = 4: DoEvents: Loop
Do Until ie.READYSTATE = 4: DoEvents: Loop

,例如,它看起来像这样:

Do While ie.READYSTATE = 4
    DoEvents
Loop

但是:代替了VBA中的新行。

确保更改循环,如下所示:

Do While NOT ie.READYSTATE = 4: DoEvents: Loop

答案 1 :(得分:1)

getElementsByClassName是复数;即它代表一个集合。以下代表此类的第一个对象,然后单击。

中的第一个锚标记
ie.Document.getElementsByClassName("search_for_watchers")(0).getElementsByTagName("a")(0).click

如果要将对象var分配给元素,然后使用var进行单击,则需要设置var。

答案 2 :(得分:1)

您还可以遍历标记并找到要单击的标记,如下所示:

Set tags = ie.document.getElementsByTagName("a")
For Each tagx In tags
    If tagx.innerText = "Procurar por outros observadores para adiconar" Then
        tagx.Click
        Exit For
    End If
Next