首页 > 解决方案 > Excel VBA 更改网站组合框

问题描述

我有一个要与之交互的网页。它有一个名为“结果”的父组合框。当 Result 设置为 Index 2 的选项时,它会弹出一个带有两个选项的子组合框。设置父组合框的索引并触发 onchange 事件非常有效。

但是,我所做的任何事情都没有成功地以我正在寻找的方式操纵子组合框。

这是子组合框的网页代码:

<div style="display:none;" id="SAVE PENDINGDIV" >
<select name="SAVE PENDINGSelect" class="famSelect" style="width:10em" onChange="handleSys(this.options[this.selectedIndex].value)">
<option value="" selected="selected" >Text 1</option>
<option value="Y">Text 2</option>

这是我操作父组合框的代码:

Set objshell = CreateObject("Shell.Application")

IE_Count = objshell.Windows.count

For x = 0 To (IE_Count - 1)

    On Error Resume Next    ' sometimes more web pages are counted than are open
    my_URL = objshell.Windows(x).document.Location
    my_title = objshell.Windows(x).document.Title

    'find the desired page
    If my_title Like "Page Title" Then

        Set ie = objshell.Windows(x)
        Exit For

    End If

Next

ie.document.getelementbyid("Result").selectedIndex = 2
ie.document.getelementbyid("Result").FireEvent ("onchange")

我试过 getelementbyname 和 getelementbyid。以下是我尝试过但没有成功的事情的概要:

ie.document.getelementbyid("SAVE PENDINGDIV").Value = "Text 2"
ie.document.getelementbyid("SAVE PENDINGDIV").Focus
ie.document.getelementbyid("SAVE PENDINGDIV").FireEvent ("onchange")

ie.document.getelementbyid("SAVE PENDINGDIV").Selected = "Selected"
ie.document.getelementbyid("SAVE PENDINGDIV").Click

ie.document.getelementbyid("SAVE PENDINGDIV").selectedIndex = 1
ie.document.getelementbyid("SAVE PENDINGDIV").options.selectedIndex = 1

我只做了一件事:

ie.document.getelementbyid("SAVE PENDINGDIV").innerText = "Text 2"

这摆脱了我不想做的组合框,并将其替换为“文本 2”作为纯文本。

标签: excelcomboboxvba

解决方案


推荐阅读