如何在VBA中激活点击这个超链接?

问题描述 投票:0回答:1

经过一些非常友好的帮助,我现在有一个小片代码导航到一个网站,使用Excel中的VBA模块。它在A2单元格中选取了一匹马的名字,我的马是虎卷.这就是代码。

 Dim objIE As InternetExplorer
    Set objIE = New InternetExplorer
    'make web page visible
    objIE.Visible = True

    'navigate objIE to this web page
    objIE.navigate "https://www.britishhorseracing.com/racing/horses/racehorse-search-results?pagenum=1&q=" & Sheets("Sheet1").Range("A2").Value & "&rated=false"

    'wait here a few seconds while the browser is busy
    Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

问题是,我已经检查了页面,并找到了链接,但对于我的生活,我只是不能写正确的代码,以激活链接,以钻进马的统计.Can任何人都可以帮助,也许解释的方式来做到这一点? 非常感谢你这么多的前期。

vba hyperlink click
1个回答
0
投票

使用结果的类名来瞄准锚点点击

objIE.document.querySelector(".link-row").click

0
投票

如果您的搜索只有一个结果,则链接到马匹详情页的内容为 href 属性的唯一项目的 "tr link-row" 类.如果你的搜索有更多的结果,那么你的每一个搜索结果都会有一个项目,你可以用同样的方式对它们做你想做的事情(你可以保留第一个或循环通过它们等)。

只需记住,这些元素在第一时间并不是文档的一部分,因为文档会和它的HTML代码一起加载,其中包含了加载其他元素的脚本,所以VBA必须等待Internet Explorer来运行这些脚本。

在你的代码之后,要进入结果页中的onlyfirst马的详情页。

Dim htmlPage As HTMLDocument
Set htmlPage = objIE.Document

'Page is dynamically populated from script. You have to wait when the horse link gets loaded
Do While htmlPage.getElementsByClassName("tr link-row").Length < 1
    DoEvents
Loop

'Get link (href attribute) and navigate to it
objIE.navigate htmlPage.getElementsByClassName("tr link-row").Item(0).href

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

请注意,当 InternetExplorer 对象的一部分 Microsoft Internet Controls 图书馆。HTMLDocument 属于 Microsoft HTML Object Library,所以在VBA中把它添加到引用中。

© www.soinside.com 2019 - 2024. All rights reserved.