1

SpectrumLive という株式取引 Web サイトへの VBA インターフェイスを Excel で作成しようとしています。

サイトの関連フォームに購入する株式数を入力できます。ただし、[注文する] ボタンをクリックすると、VBA によって入力された値ではなく、最後に手動で入力した値が記憶されます。サーバー側に値を登録させるには、イベントなどを発生させる必要があるようなものです。

フィールドは、編集可能なテキスト フィールドを持つコンボボックスのように見えます。コンボボックス コントロールの小さな矢印を選択すると、事前定義された値を実際に選択できます。ただし、スクリプトは値をテキスト フィールドに直接入力します (手動でも同様にできます)。

私はかなり長い間その特定の問題に取り組んできましたが、アイデアが尽きてしまいました。

私が使用するVBAは次のとおりです。

theDocument.getElementsByName("ordertype").Item(i).value = "88"

取引する株式数を 88 に設定します。

次の方法で OnChange イベントを発生させようとしました。

theDocument.getElementsByName("ordertype").Item(i).FireEvent ("onchange")

しかし運がない。

ページの特定の部分の HTML コードは次のようになります。

<div id="MenuMgr_WM_view4_widgetbfcca409xc930x42d5x8d00x04a83ed68e5f_ordertab_amountrow" class="formrow">

<div id="MenuMgr_WM_view4_widgetbfcca409xc930x42d5x8d00x04a83ed68e5f_ordertab_amountrow_error" class="error_field">

<span class="inline amount">

<label class="label" title="Quantity">Quantity:</label>

<div class="amount_type input selector" style="display:none;" name="MenuMgr$WM_view4$widgetbfcca409xc930x42d5x8d00x04a83ed68e5f$ordertab$amountrow$ctl00">

<span id="MenuMgr_WM_view4_widgetbfcca409xc930x42d5x8d00x04a83ed68e5f_ordertab_amountrow_amount" name="MenuMgr$WM_view4$widgetbfcca409xc930x42d5x8d00x04a83ed68e5f$ordertab$amountrow$amount">

<div id="AmountSelectorContainer">

<span id="MenuMgr_WM_view4_widgetbfcca409xc930x42d5x8d00x04a83ed68e5f_ordertab_amountrow_amount_AmountSelectorControl" name="MenuMgr$WM_view4$widgetbfcca409xc930x42d5x8d00x04a83ed68e5f$ordertab$amountrow$amount$AmountSelectorControl">

<div id="AmountSelectorDropDownList" class="left input selector" name="MenuMgr$WM_view4$widgetbfcca409xc930x42d5x8d00x04a83ed68e5f$ordertab$amountrow$amount$AmountSelectorControl$AmountSelectorDropDownList">

**<input class="inp aright" type="text" value="" name="ordertype" title="">**

<div class="btns">

</div>

</span>

</div>

</span>

</span>

<div class="formrow amount_info" style="display: none;"> </div>

上記の「ordertype」という名前のフィールドの「値」は「」ですが、SpectrumLive は数量として 88 を表示します (どのフィールドがコンボボックスのテキスト フィールドを表しているかを Firebug が教えてくれました)。

これについての助けは大歓迎です!

ありがとう、

4

1 に答える 1

0
<input class="inp aright" type="text" value="" name="ordertype" title="">

上記の html はテキスト ボックスであり、その値を設定するには、以下のコードを使用できます。

 Set i_Order = theDocument.getElementsByName("ordertype")
 i_Order.Value = "88"

また

 Set i_Amt = theDocument.getelementbyid("AmountSelectorDropDownList")
 set i_Order = i_Amt.NextSibling  '(put a breakpoint here)
 i_Order.Value = "88"

(即時ウィンドウに移動し、このテキスト?i_order.OuterHTMLをデバッグ モードにすると、ordertype テキストボックスを取得したかどうかがわかります。うまくいかない場合は、これを試してくださいset i_Order = i_Amt.NextSibling.NextSibling)

また、テキストボックスに添付されたjavascript変更イベントは表示されず、FireEventを使用する必要はありません。

于 2013-06-02T01:48:09.283 に答える