【发布时间】:2017-10-31 05:37:30
【问题描述】:
我到处寻找解决方案,但没有任何效果。这是我的代码:
Sub GetData()
Dim IE As Object
Dim ccy As Object
Dim ccy1 As Object
Dim allstatus As Object
Dim GetMTM As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
Application.DisplayAlerts = False
'go to MTM report
IE.navigate "www.mylink.com"
'check for good connection
Do Until Not IE.Busy And IE.readyState = 4
DoEvents
Loop
'wait for window to open
Application.Wait (Now + TimeValue("0.00:01"))
'send login information
SendKeys "blah", True
SendKeys "{TAB}", True
SendKeys "blah"
SendKeys "{TAB}", True
SendKeys "blah"
SendKeys "{ENTER}", True
'check for good connection
Do Until Not IE.Busy And IE.readyState = 4
DoEvents
Loop
'wait for window to open
Application.Wait (Now + TimeValue("0.00:01"))
'all status
Set allstatus = IE.document.getelementbyid("allstatus1")
allstatus.Click
Set ccy = IE.document.createevent("HTMLEvents")
ccy.initevent "change", True, False
Set ccy1 = IE.document.getelementbyid("currency")
ccy1.selectedindex = 9
ccy1.dispatchevent ccy 'nothing happens here!!!
'load data
Set GetMTM = IE.document.forms(0)
GetMTM.submit
End Sub
问题是我无法让 dispatchevent 工作。如果我使用 f8 单步执行我的代码,我可以看到下拉框更改为 CAD,但是当我提交表单时,它会变回原始值。该页面从未真正刷新。我已经尝试了该站点上建议的所有解决方案,并且一切都与下面的完全相同。仅供参考,我正在使用 IE11。
PS 我很抱歉,但我无法提供该页面的链接
更新:我现在认为是提交表单事件现在不起作用。如果我删除下拉菜单并单击复选框,然后尝试使用
运行表单'load data
Set GetMTM = IE.document.forms(0)
GetMTM.submit
它不会加载表单。但是,如果我自己去点击“开始”按钮,它就可以工作.. 这是提交按钮和复选框的 HTML
<TD align="right" valign="center"><input id="matchedstatus1" name="matchedstatus" style="font-family: Verdana, Helvetica, sans-serif; font-size: 12px" onclick="javascript:changeStatus(markToMarketBean, this)" type="checkbox" value="true" checked="checked"/><input type="hidden" name="_matchedstatus" value="on"/> </TD>
<TD align="left" valign="center">Matched</TD>
<TD><IMG src="/images/gtss/neutral/spacer.gif" width="12"
height="1"></TD>
<TD align="right" valign="center"><input id="oursource1" name="oursource" style="font-family: Verdana, Helvetica, sans-serif; font-size: 12px" onclick="javascript:changeSource(markToMarketBean, this)" type="checkbox" value="true" checked="checked"/><input type="hidden" name="_oursource" value="on"/> </TD>
<TD align="left" valign="center">Ours</TD>
<TD rowspan="2"><IMG src="/images/gtss/neutral/spacer.gif"
width="10" height="1"></TD>
<TD align="left" valign="middle" rowspan="2"><input type="submit"
name="go" value='Go'
style="font-family: Verdana, Helvetica, sans-serif; font-size: 12px">
</TD>
</TR>
<TR>
<TD align="right" valign="center"><input id="allstatus1" name="allstatus" style="font-family: Verdana, Helvetica, sans-serif; font-size: 12px" onclick="javascript:changeStatus(markToMarketBean, this)" type="checkbox" value="true"/><input type="hidden" name="_allstatus" value="on"/> </TD>
<TD align="left" valign="center">All</TD>
<TD><IMG src="/images/gtss/neutral/spacer.gif" width="12"
height="1"></TD>
<TD align="right" valign="center"><input id="theirsource1" name="theirsource" style="font-family: Verdana, Helvetica, sans-serif; font-size: 12px" onclick="javascript:changeSource(markToMarketBean, this)" type="checkbox" value="true"/><input type="hidden" name="_theirsource" value="on"/> </TD>
<TD align="left" valign="center">Theirs</TD>
编辑:这是 Dropbox 的 html 代码:
<select id="currency" name="currency" style="font-family: Verdana, Helvetica, sans-serif; font-size: 12px;">
<option value="AED">AED</option><option value="ARS">ARS</option><option value="AUD">AUD</option><option value="BDT">BDT</option><option value="BGL">BGL</option><option value="BGN">BGN</option><option value="BMD">BMD</option><option value="BOB">BOB</option><option value="BRL">BRL</option><option value="CAD">CAD</option><option value="CHF">CHF</option><option value="CLP">CLP</option><option value="CNY">CNY</option><option value="COP">COP</option><option value="CYP">CYP</option><option value="CZK">CZK</option><option value="DKK">DKK</option><option value="ECS">ECS</option><option value="EEK">EEK</option><option value="EGP">EGP</option><option value="EUR">EUR</option><option value="FIM">FIM</option><option value="GBP">GBP</option><option value="GHC">GHC</option><option value="HKD">HKD</option><option value="HRK">HRK</option><option value="HUF">HUF</option><option value="IDR">IDR</option><option value="ILS">ILS</option><option value="INR">INR</option><option value="ISK">ISK</option><option value="JOD">JOD</option><option value="JPY">JPY</option><option value="KES">KES</option><option value="KRW">KRW</option><option value="KWD">KWD</option><option value="KZT">KZT</option><option value="LBP">LBP</option><option value="LKR">LKR</option><option value="LTL">LTL</option><option value="LVL">LVL</option><option value="MAD">MAD</option><option value="MUR">MUR</option><option value="MXN">MXN</option><option value="MYR">MYR</option><option value="NGN">NGN</option><option value="NOK">NOK</option><option value="NZD">NZD</option><option value="PEN">PEN</option><option value="PGK">PGK</option><option value="PHP">PHP</option><option value="PKR">PKR</option><option value="PLN">PLN</option><option value="ROL">ROL</option><option value="RUB">RUB</option><option value="SEK">SEK</option><option value="SGD">SGD</option><option value="SIT">SIT</option><option value="SKK">SKK</option><option value="THB">THB</option><option value="TND">TND</option><option value="TRL">TRL</option><option value="TRY">TRY</option><option value="TWD">TWD</option><option value="TZS">TZS</option><option value="UAH">UAH</option><option value="USD" selected="selected">USD</option><option value="VEB">VEB</option><option value="VND">VND</option><option value="ZAR">ZAR</option><option value="ZWD">ZWD</option>
【问题讨论】:
-
check out the answer here 使用了类似的方法。我总是建议不要使用 SendKeys,因为如果在用户运行它时发生另一个事件,则不能保证发送它们。
-
谢谢@JimmySmith。我已经看到该链接并尝试了该页面上的所有内容.. 没有一个有效。我不知道此时还可以尝试什么……或者我错过了一个非常简单/明显的部分??
-
你能分享你正在使用的页面吗?
-
很遗憾,我无法分享链接。该工作表只是一个数据表,数据顶部是一个下拉列表,可让您选择我们希望数据使用的货币。我认为问题可能出在 initevent ..也许改变不是事件我想要吗?
-
更新:所以如果我手动从下拉菜单中单击我想要的货币,然后查看源代码,源代码无法识别该单击.. 它仍然是旧货币。源代码仅在我提交表单时更改
标签: html vba internet-explorer-11 getelementbyid dispatchevent