3

公益事業会社の Web サイトに移動し、そのアカウントにリンクされているすべてのステートメントをダウンロードする Excel マクロを作成しています。明細書のダウンロード ページにアクセスするには、各アカウントの概要ページに移動する必要があります。すべてのアカウントがドロップダウンにリストされます。リストから別のアカウントを手動でクリックすると、ページが新しいアカウントに更新されます。この質問から得たヒントを使用して、ドロップダウン値を変更するマクロを取得できます。問題は、リストから新しい値を選択しても、ページが新しいアカウントに更新されないことです。残念ながら、ドロップダウンがスクリプトに値を渡すように見えるため、各アカウントのページへの直接リンクはありません。別のアカウントから URL をコピーしてみましたが、どのアカウントの URL でも同じです。問題のVBAコードは次のとおりです。

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

ドロップダウン値を変更した後に IE を更新しようとしましたが、更新するとドロップダウンの元の値に戻ります。新しいインデックスを選択した後も試しie.document.getElementById("ctl00_PageContent_AccountDropDown_BillingAccountsDropDown").Clickましたが、効果はありませんでした。

ドロップダウンの HTML ソース コードは次のとおりです。長くならないように、アカウントの大部分を削除し、アカウント番号とアドレスを「x」で難読化しました。

<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>

ドロップダウンで選択した後、ページを新しいアカウントに更新する方法についてのアイデアは大歓迎です.

4

1 に答える 1

3

ドロップダウンのインデックスを設定したら、変更イベントをトリガーする必要があります。

select name="ctl00$PageContent$AccountDropDown$BillingAccountsDropDown" onchange="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$AccountDropDown$BillingAccountsDropDown\',\'\')', 0)" id="ctl00_PageContent_AccountDropDown_BillingAccountsDropDown" スタイル="幅:250px;"

doc.getElementById("xs_r_gender").selectedindex=1
doc.getElementById("xs_r_gender").FireEvent("onchange")
于 2013-05-03T00:45:36.110 に答える