用户输入登录ID /密码后,我正在编写宏来访问网页。如果其中任何一个字段留空,我已经添加了退出子代码的代码 - 但是我如何处理登录不起作用的事件?目前,它只是将它们带到网站登录页面,但我宁愿登录代码循环,直到登录工作。
任何方式这样做?我不熟悉互联网控制。
我的代码的登录部分如下所示:
Set SupDOC = SupIE.document
With SupDOC.forms(0)
.j_username.Value = InputBox("To Login Dun & Bradstreet, Enter your D&B Username/Email: ")
If .j_username.Value = "" Then
MsgBox "No Username was entered."
Exit Sub
End If
.j_password.Value = InputBox("To Login Dun & Bradstreet, Enter your D&B Password: ")
If .j_password.Value = "" Then
MsgBox "No Password was entered."
Exit Sub
End If
.submit
End With
编辑:
有时登录超时并在提交正确的登录信息后,网站会重定向到“会话已超时”,并且需要再次登录。登录后,该站点不会加载到我稍后指定的页面。有关解决这个问题的任何想法吗?
谢谢,
答案 0 :(得分:0)
提交后,您可以循环等待ReadyState返回4,然后检查字段是否为空,然后转到顶部并再次尝试直到它工作。
编辑:将URL定义为字符串,如果重定向,它将导航到登录页面。
URL = SupIE.LocationURL
TryAgain:
Set SupDOC = SupIE.document
With SupDOC.forms(0)
.j_username.Value = InputBox("To Login Dun & Bradstreet, Enter your D&B Username/Email: ")
If .j_username.Value = "" Then
MsgBox "No Username was entered."
Exit Sub
End If
.j_password.Value = InputBox("To Login Dun & Bradstreet, Enter your D&B Password: ")
If .j_password.Value = "" Then
MsgBox "No Password was entered."
Exit Sub
End If
.submit
Do While SupIE.readyState <> 4: DoEvents: Loop
If .j_username.Value = "" Or .j_password.Value = "" Then GoTo TryAgain:
If InStr(SupDOC.DocumentElement.outerText, "Session timed") Then
SupIE.navigate URL
Do While SupIE.readyState <> 4: DoEvents: Loop
GoTo TryAgain:
End If
End With
答案 1 :(得分:0)
我在登录提交后放置了这些循环,并导航到新站点并解决了重定向的任何问题。这取决于网站,但这会绕过&#34;会话超时&#34;对我来说。
Do While SupIE.Busy: DoEvents: Loop
Do Until SupIE.readyState = READYSTATE_COMPLETE: DoEvents: Loop