Internet explorer 使用VBA Excel通过更改下拉列表值来导航网站

Internet explorer 使用VBA Excel通过更改下拉列表值来导航网站,internet-explorer,excel,drop-down-menu,vba,Internet Explorer,Excel,Drop Down Menu,Vba,我正在编写一个Excel宏,它将导航到公用事业公司的网站,然后下载链接到该帐户的所有报表。要进入报表下载页面,我需要导航到每个帐户的摘要页面。所有帐户都列在下拉列表中-当我手动单击列表中的其他帐户时,页面将更新为新帐户。使用我从中获得的提示,我能够获得宏来更改下拉值。问题是,即使它从列表中选择了一个新值,页面也不会更新为新帐户。不幸的是,没有直接链接到每个帐户的页面,因为它看起来像是下拉列表将值传递给脚本。我试着从不同的帐户复制URL,但不管是哪个帐户,URL上的URL都是相同的。下面是有问题的

我正在编写一个Excel宏,它将导航到公用事业公司的网站,然后下载链接到该帐户的所有报表。要进入报表下载页面,我需要导航到每个帐户的摘要页面。所有帐户都列在下拉列表中-当我手动单击列表中的其他帐户时,页面将更新为新帐户。使用我从中获得的提示,我能够获得宏来更改下拉值。问题是,即使它从列表中选择了一个新值,页面也不会更新为新帐户。不幸的是,没有直接链接到每个帐户的页面,因为它看起来像是下拉列表将值传递给脚本。我试着从不同的帐户复制URL,但不管是哪个帐户,URL上的URL都是相同的。下面是有问题的VBA代码:

Do While i < intNumberAcct
    ie.document.getElementById("ctl00_PageContent_AccountDropDown_BillingAccountsDropDown").selectedindex = i
    Call downloadStatement
    i = i + 1
Loop

在下拉列表中选择页面后,如果您有任何关于如何让页面更新到新帐户的想法,我们将不胜感激。

一旦您设置了下拉列表的索引,您需要触发更改事件

选择name=“ctl00$PageContent$AccountDropDown$BillingAccountsDropDown”onchange=“javascript:setTimeout”(“回发邮件”(“ctl00$PageContent$AccountDropDown$BillingAccountsDropDown\”,“\”),0)”id=“ctl00\U PageContent\U AccountDropDown\U BillingAccountsDropDown”style=“宽度:250px;”


当您(个人)在下拉框中更改帐户时,页面是否刷新?你也可以扩展你的“选择”框的例子,包括“表单”标签。因为你已经混淆了名称,我认为这是机密数据。您可能输入了访问此信息的密码。该网站需要能够将后续传输链接到您。一种常见的技术是分配一个会话id,该id包含在每个后续传输中。你的代码必须模拟这种链接技术,否则网站会假设每次传输都是一个新的查询。桑托什的提示对我有用。我没有任何问题的网站想要重新验证。
<table style="width: 100%" cellpadding="0" cellspacing="0">
<tr>
    <td valign="top" class="AccountDropDownLabelCells" style="height: 25px;">
        <strong>Billing Account:</strong>
    </td>
    <td valign="top" style="text-align: left" align="left">
        <select name="ctl00$PageContent$AccountDropDown$BillingAccountsDropDown" onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;ctl00$PageContent$AccountDropDown$BillingAccountsDropDown\&#39;,\&#39;\&#39;)&#39;, 0)" id="ctl00_PageContent_AccountDropDown_BillingAccountsDropDown" style="width:250px;">
          <option value="xxxxx">xxxxx(16 xxxxx Dr)</option>
          <option selected="xxxxx" value="xxxxx">xxxxx(18 xxxxxDr)</option>
          <option value="xxxxx">xxxxx(20 xxxxx Dr)</option>
          <option value="xxxxx">xxxxx(22 xxxxxDr)</option>
          <option value="xxxxx">xxxxx(28 xxxxx Dr)</option>
          <option value="xxxxx">xxxxx(30 xxxxxDr)</option>
          <option value="xxxxx">xxxxx(34 xxxxxDr)</option>
</select>
        &nbsp;
    </td>
</tr>


</table>
doc.getElementById("xs_r_gender").selectedindex=1
doc.getElementById("xs_r_gender").FireEvent("onchange")