【发布时间】:2011-01-12 02:06:12
【问题描述】:
我正在像这样在 Excel VBA 中自动化 ie,部分
Set ie = CreateObject("InternetExplorer.Application")
With ie
.navigate "http://www.statspass.com/login.asp"
Do While .Busy: DoEvents: Loop
Do While .readyState <> 4: DoEvents: Loop
With .document.forms(0)
.txtUsername.Value = "username"
.txtPassword.Value = "*****"
.submit
End With
稍后在代码中,我导航到不同的 url 并获取一些数据。昨天这一切都很好。今天,当它到达“提交”行时,网站会显示一个消息框,上面写着“正在注销另一个会话”。我设置了 ie.Visible = True 并逐步通过代码来解决这个问题。如所写,消息框未显示。当显示消息框时,它位于页面上,并且 .Busy(上面未显示)始终为真,因此代码只是在循环中坐在那里。
当 ie.Visible = False 时,没有消息框(如我所料),代码没有被挂起,但在下一次 Navigate 方法调用中,它最终回到登录页面(因为它不是正确登录),我在尝试访问登录屏幕上不存在的某些表时遇到错误。
我需要登录这个网站,导航到某个页面,并从表格中获取信息。根据我的代码现在的位置,我想弄清楚如果该消息框存在以及何时存在,如何对它说 OK。但如果我需要退后一步考虑其他方法,我并不反对。
不太重要,但仍然困扰着我,为什么这段代码昨天有效?我对其进行了测试,并将其发送给报告了这些错误的客户,而今天我收到了这些错误。
【问题讨论】:
标签: internet-explorer vba