首页 > 解决方案 > 如何通过excel vba ie自动化为复选框添加勾选?

问题描述

我试图添加勾选的复选框是在线表格的一部分,似乎没有被编码为复选框。

我尝试了以下方法来添加一个勾号,但没有任何工作:

IE.Document.getElementByID("gridcolumn-1658-titleEl").Click

IE.Document.getElementByID("gridcolumn-1658-textEl").Click

IE.Document.getElementsByClassName("x-column-header-inner x-column-header-over")(0).Click

IE.Document.getElementsByClassName("x-column-header-inner")(0).Click

当我检查元素时,我得到以下内容,但这些看起来都不像复选框(第三个是实际参考):

<div class="x-column-header x-column-header-checkbox x-column-header-align-left x-box-item x-column-header-default x-unselectable x-column-header-first" style="border-width: 1px; width: 24px; right: auto; left: 0px; top: 0px; margin: 0px; height: 24px;" id="gridcolumn-1658"><div id="gridcolumn-1658-titleEl" class="x-column-header-inner" style="padding-top: 6px; padding-bottom: 6px;"><span id="gridcolumn-1658-textEl" class="x-column-header-text">&nbsp;</span></div></div>

<div id="gridcolumn-1658-titleEl" class="x-column-header-inner" style="padding-top: 6px; padding-bottom: 6px;"><span id="gridcolumn-1658-textEl" class="x-column-header-text">&nbsp;</span></div>

<span id="gridcolumn-1658-textEl" class="x-column-header-text">&nbsp;</span>

该网站是OptimoRoute,对于那些感兴趣的人来说,使用新的登录可以相当快地访问它!

我要单击的按钮是表中的顶部。

标签: excelvbainternet-explorerautomation

解决方案


请参考以下示例代码:

Sub main()
    'we define the essential variables

    Dim IE As Object, Data As Object
    Dim ticket As String


    Set IE = CreateObject("InternetExplorer.Application")

    With IE
        .Visible = True
        .navigate ("https://dillion132.github.io/vbacheckbox.html")

        While IE.ReadyState <> 4
            DoEvents
        Wend

        Set Data = IE.Document.getElementsByClassName("check")

        Debug.Print Data.Length

        If Len(Data) > 0 Then
            For Each ee In Data

                'Debug.Print ee.Value

                'Based on the checkbox value to check/uncheck the checkbox.
                If ee.Value = "Cat" Then

                   ee.Checked = True

                End If

                'check whether the checkbox is checked, then, get the checked value.
                If ee.Checked Then
                   Debug.Print ee.Value & " is checked"

                End If
            Next ee

        End If
    End With
    Set IE = Nothing
End Sub

网站上的代码:

<input class="check" type="checkbox" value="Cat"> Cat </input>
<br />
<input class="check" type="checkbox" value="Dog"  >Dog</input> 
<br />
<input class="check" type="checkbox" value="Pig" checked ="checked" >Pig</input>

结果如下:

在此处输入图像描述


推荐阅读