首页 > 解决方案 > 通过 Excel VBA 单击链接 - getElementsByTagName 不起作用

问题描述

我以前见过这种方式的 excel VBA,但不幸的是,它似乎对我不起作用。我正在使用 Excel 2016,我正在尝试导航到内部网站并单击链接以开始下载文件并将其保存到我的桌面,但不幸的是,我看到的代码“点击”该链接似乎不起作用。

请看下面的代码:

Sub Downloader()
    Dim Browser As Object
    Dim Website As String
    Dim LinkList As Object
    Set Browser = CreateObject("InternetExplorer.Application")
    Website = "http://website.com/thingamajig.html"
    With Browser
        .Visible = True
        .navigate Website
        For Each X In .document.getElementsByTagName("a")
            If X.Title = "Link to Change Reports" Then
                X.Click
                Exit For
            End If
        Next
    End With
End Sub

代码一直运行到开始查找 For Each X... 的行之后,我收到一条错误消息,指出以下内容:

运行时错误“-2147467259 (80004005)”:自动化错误未指定错误*

标签: excelvbahyperlink

解决方案


在开始搜索链接之前,您必须留出一些时间让导航文档完全下载。

在指定行之间将以下标记行添加到您的代码中:

    ....
    .navigate Website 'after this line

    Do While Browser.Busy = True Or Browser.readyState <> 4
        DoEvents
    Loop

    For Each X In .document.getElementsByTagName("a") 'before this line
    ....

推荐阅读