VBA控制下拉菜单

时间:2016-02-24 16:09:55

标签: html excel vba excel-vba

我正在尝试控制website上的下拉列表,但由于某种原因无法与之交互。以下是我认为从下拉菜单中负责的HTML部分:

    <div id="content">
        <div id="main">
            <div class="container">
                <div class="formBody">
                    <h1>Get a Quote</h1>
                    <div style="width:215px; height:35px;" class="noBottomSpacing">
                      <select id="quoteDropdown" name="position">
                            <option>Select Type of Quote</option>
                            <option value="ltl">LTL Quote</option>
                            <option value="truckload">Truckload Quote</option>
                            <option value="expedited">Expedited Quote</option>
                            <option value="Mexico">Mexico Quote</option>
                        </select>
                    </div>

                </div>
                <br />
                <div class="quoteContent">
                </div>
            </div>
        </div>

我尝试了几种不同的VBA代码段,但似乎没有任何效果。

    ie.Document.getElementbyID("quoteDropdown").selectedindex = 1
    ie.Document.getElementbyID("quoteDropdown").Item(0).Value = 1
    ie.Document.getElementbyID("quoteDropdown").Value = "ltl"

如果有人有任何指导我会很感激。谢谢!

2 个答案:

答案 0 :(得分:0)

这样的东西
Dim ie As SHDocVw.InternetExplorer
Dim d As MSHTML.IHTMLSelectElement

Set ie = New InternetExplorer
ie.Visible = 1

ie.navigate "http://www.saia.com/RequestQuote.aspx"

While ie.Busy Or ie.readyState <> READYSTATE_COMPLETE
    DoEvents
Wend

Set d = ie.document.getElementById("quoteDropdown")

'     Then use d.selectedindex or d.item(1).text d.value etc.

查看网页源代码是通过每个内部项目的click事件处理的,因此您需要获取这些内容,然后触发click事件

从页面“$('#quoteDropdown')。val('ltl')。触发器('click')。selectric('refresh');                                 loadquote( 'LTL');“

答案 1 :(得分:0)

好的,我弄明白了。感谢Nathan_Sav指出我的说法。这段代码正在改变索引,但并没有触发事件。

ie.document.getElementbyID("quoteDropdown").selectedindex = 1

为了解雇事件我必须调用函数&#34; loadquote&#34;

ie.document.parentWindow.execScript "loadquote('ltl')"

这成功地调用了函数&#34; loadquote&#34;并更新了页面。