首页 > 解决方案 > 使用来自不同单元格的超链接时出错

问题描述

我在 vba 中编写了一个脚本来利用hyperlinksfrom Range(A1")to来从每个网页Range("A2")中抓取。但是,当我执行以下宏时,title我收到一个错误。Expected Function or Variable.FollowHyperlink

Sub getTitle()
    Dim Http As New XMLHTTP60, Html As New HTMLDocument
    Dim cel As Range

    For Each cel In Sheets("summary").Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        If cel <> vbNullString Then
            With Http
                .Open "GET", ThisWorkbook.FollowHyperlink(cel), False
                .send
                Html.body.innerHTML = .responseText
            End With
            Debug.Print Html.queryselector("p.ueberschrift").innertext
        End If
    Next cel
End Sub

如何使用这些超链接来解析网页的标题?

下图显示了超链接在单元格中的样子: 在此处输入图像描述

标签: vbaweb-scrapinghyperlink

解决方案


您需要一个字符串,更具体地说是一个绝对 url,在XMLHttpRequestGET的方法中传递。Open相反,您正在尝试使用Workbook.FollowHyperlink,这是一个返回Workbook对象的表达式。结果可能如下:

如果已下载,则显示缓存的文档。否则,此方法解析超链接,下载目标文档,并在适当的应用程序中显示该文档。

你正在尝试的东西是不可能的。

语法是:

If cel <> vbNullString Then
            ThisWorkbook.FollowHyperlink cel.Value

然后,您可能会注意到一个新的选项卡/浏览器窗口打开,以显示适当的 Web 文档(如果有效)。

我相信您的消息的特殊性是由于您在参数周围使用了括号。

您可以检索超链接的基础地址:

.Open "GET", cel.Hyperlinks(1).Address, False

推荐阅读