使用VBA单击IE网页中的链接/按钮

时间:2017-01-19 16:30:56

标签: excel vba excel-vba web-scraping ie-automation

我已经阅读了很多关于使用VBA点击IE中的链接的信息,但我不能让它在我的情况下工作。    相关的HTML代码如下:

<div id="LinkButton_3" widgetId="LinkButton_3">
    <a class="Row_Icon" data-dojo-attach-point="linkNode" data-dojo-attach-event="onClick:_onLinkButtonClicked">Company XYZ. - #12345</a>
</div>

我尝试过的VBA代码有三种不同的尝试,如下所示:

Dim ieApp           As SHDocVw.InternetExplorer
Dim ieDoc           As MSHTML.HTMLDocument
Dim button          As HTMLInputButtonElement
Dim div             As HTMLDivElement

' Create a new instance of IE
    Set ieApp = New InternetExplorer

' Uncomment this line for debugging purposes.
    ieApp.Visible = True
' Go to the page we're interested in.
    ieApp.Navigate "MyURL.com"


    Do While ieApp.Busy: DoEvents: Loop
    Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop

    Set ieDoc = ieApp.Document
' Try #1.
' Nothing happened on the web page after these 3 lines were executed.
        Set button = ieDoc.getElementById("LinkButton_3")
        button.Focus
        button.Click
' Try #2
' Nothing happens - button is not clicked.
        Set div = ieDoc.getElementById("LinkButton_3")
        div.FireEvent "onClick"
' Try #3
' Nothing happens - button is not clicked.
        div.Click

' Close the instance of IE.
        ieApp.Quit
' Clean up.
        Set ieApp = Nothing
        Set ieDoc = Nothing

对于我可能做错了什么或其他建议的任何想法都将非常感激。

TMC

2 个答案:

答案 0 :(得分:2)

您还可以使用#LinkButton_3 a的CSS querySelector。这是元素内带有a id的{​​{1}}标签。 “#”表示LinkButton_3。 “ a”表示其中的id标签。

CSS query

.querySelector方法属于HTMLDocument。

您可以这样做:

a

答案 1 :(得分:1)

<div id="LinkButton_3" widgetId="LinkButton_3">
    <a class="Row_Icon" data-dojo-attach-point="linkNode" data-dojo-attach-event="onClick:_onLinkButtonClicked">Company XYZ. - #12345</a>
</div>

你要点击的是锚(a)标签,而不是div。因此,您可以找到带有其ID的div,然后单击其中唯一一个带有

的子项
button.Children(0).Click