【问题标题】:Get URL from internet link name using vba使用 vba 从 Internet 链接名称获取 URL
【发布时间】:2016-09-10 07:35:41
【问题描述】:

我们每个月都通过单击链接从互联网下载超时表格。

所以我想制作一个 vba 以从站点中的链接名称之一获取 URL。附加图像就是示例。我想获取用红色圈起来的 URL 并粘贴到 excel 中(文件名 otform.xlsm 单元格 A1)。

【问题讨论】:

  • 是的,我在 youtube 上做了一个代码,但它似乎根本不起作用......请参阅以下内容。

标签: excel vba url hyperlink


【解决方案1】:

以下代码将为您提供 google 的第一个搜索结果。
代码会搜索Cell A1中的值,并将搜索结果输入Cell B1中。

Sub GetURL()
    Dim url As String
    Dim XMLHTTP As Object, html As Object, objResultDiv As Object, objH3 As Object, link As Object

    url = "https://www.google.co.in/search?q=" & Range("A1").Value & "&rnd=" & WorksheetFunction.RandBetween(1, 10000)

    Set XMLHTTP = CreateObject("MSXML2.serverXMLHTTP")
    XMLHTTP.Open "GET", url, False
    XMLHTTP.setRequestHeader "Content-Type", "text/xml"
    XMLHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0"
    XMLHTTP.send

    Set html = CreateObject("htmlfile")
    html.body.innerHTML = XMLHTTP.ResponseText
    Set objResultDiv = html.getelementbyid("rso")
    Set objH3 = objResultDiv.getelementsbytagname("H3")(0)
    Set link = objH3.getelementsbytagname("a")(0)

    Range("B1").Value = link.href
    DoEvents

    MsgBox "Done"
End Sub

我想这就是你想要的。

here得到这个。

EDIT#1:使用 Internet Explorer ________________________________________________________________________________

Sub GetURL()
    Dim ie As SHDocVw.InternetExplorer  'Requires reference to "Microsoft Internet Controls"
    Dim searchString As String
    Dim lngStartAt As Long, lngResults As Long
    Dim doc As MSHTML.HTMLDocument      'Requires reference to "Microsoft HTML Object Library"
    Dim objResultDiv As Object, objH3 As Object, link As Object

    Set ie = New SHDocVw.InternetExplorer
    lngStartAt = 1
    lngResults = 100

    searchString = Range("A1").Value

    ie.navigate "https://www.google.co.in/search?q=" & searchString
    Do Until ie.readyState = READYSTATE_COMPLETE: DoEvents: Loop

    Set doc = ie.document
    Set objResultDiv = doc.getElementById("rso")
    Set objH3 = objResultDiv.getElementsByTagName("H3")(0)
    Set link = objH3.getElementsByTagName("a")(0)

    Range("B1") = link.href

    ie.Quit
End Sub

您必须从Tools 菜单中添加以下两个References

  1. Microsoft Internet 控件
  2. Microsoft HTML 对象库

【讨论】:

  • Hello Mrig...我遇到超时错误...当我单击调试时它会指向 --> XMLHTTP.Send...顺便说一句,我们只使用 Internet Explorer.. ..谢谢
  • @200yrs - 这可能是因为您的网速。
  • @Mrig...我们的互联网速度很快...哦,我找到了一个工作代码,见下文...但我不想获取所有 URL。我只想要链接名称为“Excel VBA 入门 - 我的程序员”code 的 URL
  • 抱歉我被 5 分钟的编辑时间抓住了......所以我们的互联网真的很快......代码可以使用 Internet Explorer 吗?
  • @200yrs - 我添加了可以使用 Internet Explorer 获取 google 结果的代码。
猜你喜欢
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
相关资源
最近更新 更多