【问题标题】:Microsoft Excel IE Automation - Selecting an Item from a Drop Down ChecklistMicrosoft Excel IE 自动化 - 从下拉清单中选择项目
【发布时间】:2020-07-26 16:24:30
【问题描述】:

我正在尝试创建一个 IE 自动化以从下拉检查列表中选择正确的项目。所有项目都设置为在站点启动时自动检查。我很难获得不需要取消选中的任何框。这是html代码

<div id="ReportViewerControl_ctl04_ctl07_divDropDown" onclick="event.cancelBubble=true;" onactivate="event.cancelBubble=true;" style="display:inline-block;border-color:DarkGray;border-width:1px;border-style:Solid;overflow:auto;background-color:window;display:none;position:absolute;z-index:11;">
            <table cellpadding="0" cellspacing="0" style="background-color:window;">
                <tr>
                    <td nowrap="nowrap"><span><input id="ReportViewerControl_ctl04_ctl07_divDropDown_ctl00" type="checkbox" name="ReportViewerControl$ctl04$ctl07$divDropDown$ctl00" checked="checked" onclick="$get('ReportViewerControl_ctl04_ctl07').control.OnSelectAllClick(this);" /><label for="ReportViewerControl_ctl04_ctl07_divDropDown_ctl00">(Select All)</label></span></td>
                </tr><tr>
                    <td nowrap="nowrap"><span><input id="ReportViewerControl_ctl04_ctl07_divDropDown_ctl02" type="checkbox" name="ReportViewerControl$ctl04$ctl07$divDropDown$ctl02" checked="checked" onclick="$get('ReportViewerControl_ctl04_ctl07').control.OnValidValueClick(this, 'ReportViewerControl_ctl04_ctl07_divDropDown_ctl00');" /><label for="ReportViewerControl_ctl04_ctl07_divDropDown_ctl02">Shift&nbsp;1</label></span></td>
                </tr><tr>
                    <td nowrap="nowrap"><span><input id="ReportViewerControl_ctl04_ctl07_divDropDown_ctl03" type="checkbox" name="ReportViewerControl$ctl04$ctl07$divDropDown$ctl03" checked="checked" onclick="$get('ReportViewerControl_ctl04_ctl07').control.OnValidValueClick(this, 'ReportViewerControl_ctl04_ctl07_divDropDown_ctl00');" /><label for="ReportViewerControl_ctl04_ctl07_divDropDown_ctl03">Shift&nbsp;2</label></span></td>
                </tr><tr>
                    <td nowrap="nowrap"><span><input id="ReportViewerControl_ctl04_ctl07_divDropDown_ctl04" type="checkbox" name="ReportViewerControl$ctl04$ctl07$divDropDown$ctl04" checked="checked" onclick="$get('ReportViewerControl_ctl04_ctl07').control.OnValidValueClick(this, 'ReportViewerControl_ctl04_ctl07_divDropDown_ctl00');" /><label for="ReportViewerControl_ctl04_ctl07_divDropDown_ctl04">Shift&nbsp;3</label></span></td>
                </tr>
            </table><span><input type="hidden" name="ReportViewerControl$ctl04$ctl07$divDropDown$ctl01$HiddenIndices" id="ReportViewerControl_ctl04_ctl07_divDropDown_ctl01_HiddenIndices" value="0,1,2" /></span>
        </div><iframe id="ReportViewerControl_ctl04_ctl11_ctl01" onclick="event.cancelBubble=true;" onactivate="event.cancelBubble=true;"

这是我尝试做的:

Do
DoEvents
Loop Until ieObj.readyState = 4
    ieObj.document.getElementById("ReportViewerControl_ctl04_ctl07_divDropDown_ctl02").Checked = "Unchecked"

此元素的框保持不变。任何关于如何改变这一点的建议将不胜感激。提前谢谢你。

【问题讨论】:

  • ieobject.document.querySelector("#ReportViewerControl_ctl04_ctl07_divDropDown_ctl00").先点击?

标签: html vba internet-explorer automation


【解决方案1】:

您应该将选中的值设置为False 以使其未选中。

示例代码如下:

Sub LOADIE()
    Set ieA = CreateObject("InternetExplorer.Application")
    ieA.Visible = True
    ieA.navigate "http://www.example.com"
    Do Until ieA.readyState = 4
       DoEvents
    Loop

    ieA.document.getElementById("ReportViewerControl_ctl04_ctl07_divDropDown_ctl02").Checked = False
End Sub

结果是这样的:

【讨论】:

  • 感谢您的快速响应,但是当我进行此更改时,框仍显示为已标记。是因为控制其他框的“全选”选项吗?我也不能操纵那个盒子,因为它不是一个 CHECKED 变量。
  • 可能是这样。您可以尝试像评论中建议的@QHarr 一样首先单击“全选”选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多