网站登录

时间:2016-08-04 14:59:01

标签: excel vba internet-explorer

用户输入登录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

编辑:

有时登录超时并在提交正确的登录信息后,网站会重定向到“会话已超时”,并且需要再次登录。登录后,该站点不会加载到我稍后指定的页面。有关解决这个问题的任何想法吗?

谢谢,

2 个答案:

答案 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
相关问题