How do I click a link on a web page using Excel VBA?
excel, vba, web-scraping
Solution
Try getting the collection of anchor tags, with:
GetElementsByTagName("a")
Then, iterate that collection using as much logic as you can to ensure you're clicking the right button.
For each l in ie.document.getElementsByTagName("a")
If l.ClassName = "hqt_button" Then
l.Click
Exit For
Next
If there are multiple anchors with the same classname, you could do:
If l.ClassName = "hqt_button" AND l.Href = ""javascript:void(0): onclick=HeaderBox.trySubmit()" Then
l.Click
Exit For
Next
Alternatively
If you are using IE9+ you could use the `GetElementsByClassName` method.
GetElementsByClassName("hqt_button")
Problem
I'm writing VBA code to obtain a ticker symbol from a user, navigate to a website, input the ticker symbol and click the appropriate link. I researched this StackOverflow question and response, however, I don't have an innertext value to utilize. My VBA code: ``` Sub clicklick() Dim ie As Object Dim form As Variant, button As Variant Set ie = CreateObject("InternetExplorer.Application") ticker = InputBox("Enter Ticker Symbol: ") With ie .Visible = True .Navigate ("http://www.SITE_URL.com") While ie.ReadyState <> 4 DoEvents Wend ie.document.getElementsbyName("sSrchTerm").Item.innertext = ticker End With End Sub ``` The link appears as follows in the page source: ``` <a class="hqt_button" href="javascript:void(0): onclick=HeaderBox.trySubmit()"></a> ``` The element doesn't seem to have a name, innertext or id. How can I click the link? EDIT: ``` Set Link = ie.document.getElementsByTagName("a") For Each l In Link If Link.classname = "hqt_button" Then Link.Click Exit For End If Next l ```