Using VBA to operate radio buttons on a web page

23,660

I was able to get it to work with the following code:

  Set ieRadio = IE.Document.all
    ieRadio.Item("ctl00$cp1$exportOption")(1).Checked = True

Thank you all for your help!

Share:
23,660
Author by

user1563370

Updated on July 05, 2022

Comments

  • user1563370 less than a minute

    I am a VBA rookie attempting to operate a radio button on the web, but am not having much luck. I've been googling for hours, and have found tons of code snippets that i have been attempting to modify to do the job, with no success whatsoever. Must of it is some variation of:

    ie.Document.getElementsByName("name_of_radiobox").Item(0).Checked = True
    

    The radio buttons are two options (Export with A, or Export with B). 'Export with A' is automatically selected, and I need obviously the other one selected. According to the HTML the name of the buttons are both the same, and it appears to be on a form that pops up on the existing page.

    How can I get the second button selected? I'm sure I am leaving out some vital information, so please let me know if I need to provide anything else, and I would be happy to. Thank you for any and all help!

    EDIT: there is this bit of code, which I believe is a subwindow that pops up (its not a separate windown, but a pane in the existing window):

    Sys.WebForms.PageRequestManager._initialize('ctl00$sm1', document.getElementById('aspnetForm'));
    

    Then the code for the box appears like this:

    <div class="so_heading">
    Export response data to Excel</div>
    <div id="ctl00_cp1_pageMessage" class="attention">Click the button to send an email containing an Excel file to the email address </div>
    <div id="ctl00_cp1_pagec" class="so_fields">
    <span id="ctl00_cp1_exportOption"><input id="ctl00_cp1_exportOption_0" type="radio" name="ctl00$cp1$exportOption" value="text" checked="checked" /><label for="ctl00_cp1_exportOption_0">Export with answer texts</label><br /><input id="ctl00_cp1_exportOption_1" type="radio" name="ctl00$cp1$exportOption" value="label" /><label for="ctl00_cp1_exportOption_1">Export with answer codes</label></span>
    <div class="gen_menu">
    <input type="submit" name="ctl00$cp1$btExport" value="Export Data" onclick="window.setTimeout(cb.curry(__DisableButton, this), 0);" id="ctl00_cp1_btExport" class="confirmitButton" />
    </div>
    

    My code so far (which opens the page, clicks a link on that page, which creates the pane with the radio button:

    Dim IE As Object Dim ieDoc As Object Dim Anchor As Object Dim ieAnchors As Object

      Set IE = CreateObject("InternetExplorer.Application")
        IE.navigate "the url to my page"
        IE.Visible = True
      Do While IE.busy: DoEvents: Loop
      Do While IE.ReadyState <> 4: DoEvents: Loop
      Set ieDoc = IE.Document
      Set ieAnchors = ieDoc.Anchors
        For Each Anchor In ieAnchors
            If Anchor.innerHTML = "Export Data..." Then
                Anchor.Click
                Exit For
            End If
        Next Anchor
      Do While IE.busy: DoEvents: Loop
      Do While IE.ReadyState <> 4: DoEvents: Loop
        ' the bit I can't get to work to toggle the radio button
        ieDoc.getElementsByName("ctl00$cp1$exportOption").Item(1).Checked = True
    End Function