我正在尝试在Excel中创建一个名为SpectrumLive的共享交易网站的VBA界面。
我可以在网站上填写相关表格中要购买的股票数量。但是,当我单击“下订单”按钮时,它会记住我输入的最后一个手动值,而不是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显示哪个字段代表组合框的文本字段)。
非常感谢任何帮助!
谢谢,
答案 0 :(得分:0)
<input class="inp aright" type="text" value="" name="ordertype" title="">
上面的html是一个文本框,要设置它的值,你可以使用下面的代码。
Set i_Order = theDocument.getElementsByName("ordertype")
i_Order.Value = "88"
OR
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。