取消选中IE中的复选框

时间:2015-06-21 13:54:52

标签: vba excel-vba internet-explorer checkbox excel

我正在尝试使用excel VBA取消选中网页上已经选中的复选框。

HTML code:

<div class="mycheckbox checked">
<label class="mycheckbox1 checked" data-initialize="checkbox">
    <input name=<name> class=<class> id=<id> type="checkbox" checked="checked"></input></label></div>

VBA代码存根:

    Public Sub uncheck(IE As Object)
    Dim Element As Object
        With IE.Document
            Set Element = .getElementById(<id>)
            Element.Checked = False
            Element.defaultChecked = False        
        End With
    End Sub

当HTML代码更改为 -

时,这不能正常工作
<div class="mycheckbox checked">
<label class="mycheckbox1 checked" data-initialize="checkbox">
    <input name=<name> class=<class> id=<id> type="checkbox" checked=""></input></label></div>

未取消选中该复选框,因为仍有选中的属性

甚至尝试了以下(点击复选框)。它什么都没做 -

    Public Sub uncheck(IE As Object)
    Dim Element As Object
        With IE.Document
            Set Element = .getElementById(<id>)
            Element.Click
        End With
    End Sub

有什么建议吗?或者我可以知道为什么我的方法不起作用?

1 个答案:

答案 0 :(得分:4)

如果我们可以取消选中该复选框,则以下代码允许进行常规测试:

Public Sub TestIE()
    Dim IE As Object
    Dim Element As Object
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    IE.Navigate "about:blank"
    IE.document.write "<html><body><input name=""chkbx_name"" class=""chkbx_cls"" id=""chkbx"" type=""checkbox"" checked=""checked""></body></html>"
    IE.document.parentWindow.alert "Verify checkbox is checked"
    Set Element = IE.document.getElementById("chkbx")
    Element.Checked = False
    IE.document.parentWindow.alert "Verify checkbox is unchecked"
    IE.Quit
End Sub

对我而言,它按预期工作:显示选中的复选框和第一个警报,然后取消选中它并显示第二个警报。如果您的网页以其他方式运行,则可以通过开发者工具检查网页上的某个onclickonchange事件处理程序的复选框。在IE中,按 F12 ,单击 DOM Explorer ,选择HTML代码中的复选框,单击事件选项卡。如果有任何事件处理程序,那么你必须澄清它是否修改了复选框的状态(紧接在你的VBA之后)。