Home » excel » internet explorer – How Can I Use VBA To Access A WebPage (IHTMLDocument?)

internet explorer – How Can I Use VBA To Access A WebPage (IHTMLDocument?)

Posted by: admin April 23, 2020 Leave a comment


Using the following code, I can open up an Internet Explorer window and navigate to the website. I would like to go further by being able to have a code click through one of the links (such as “Boxing/UFC”).

Sub Run()   
Set IE = CreateObject("InternetExplorer.Application")
With IE
    .Visible = True
    .Navigate2 "http://www.bet365.com"
    Do Until .ReadyState = 4: DoEvents: Loop
End With

Because that link leads to a Javascript onclick event (onclick="gS(1020,9);return false;") can you suggest code I could use that would enable VBA to click through that link without the user’s interference once the VBA macro is run?

How to&Answers:

In Internet Explorer, you can simply click a link via the DOM API.

Retrieve the DOM node (the A) you are interested in, and call click() on it. This will also fire all associated event handlers.

EDIT: In your case, with VBA, do something like this (untested, I don’t have VBA here)

Dim sideNav As IHTMLElement 
Dim navLinks As IHTMLElementCollection
Dim currLink As IHTMLElement

Set sideNav = IE.document.getElementByID("sln")
Set navLinks = sideNav.all.tags("A")

For Each currLink In navLinks
  If Trim(currLink.innerText) = "Boxing/UFC" Then
  End If
Next currLink


You would need to query the html document, and retrieve the collection. Once you retrieve the collection you would need to iterate through the elements and click it.

I am pasting a snippet of the code here (click here for the entire code). This is in c++, but i am assuming it must be the same for VB too.

            IHTMLElementCollection *spCollectEmbed;
            // get all the links
            long lLen;
            for (long i = 0; i < lLen; i++)
                IDispatch *ppvdispOption;
                IHTMLElement *interfaceHTMLElement;
                VARIANT index;
                index.vt = VT_I4;
                index.lVal = i;

        // get the item from the document
                HRESULT hResult = spCollectEmbed->item(index, index, &ppvdispOption);
        // query for the element
        hResult = ppvdispOption->QueryInterface( IID_IHTMLElement,
        (void **) &interfaceHTMLElement);
        BSTR innerhtml;
        // click the links