vba等到输入验证码提交表格

时间:2017-09-23 11:20:14

标签: excel-vba vba excel

我是VBA的新手。 我正在创建vba用于登录网站并获取信息,但是当我尝试登录时请求验证码。我需要一个代码,等到验证码被输入并提交表单。请帮助我。

Sub iepart2()
    Dim ie As Object
    Set ie = CreateObject("internetexplorer.application")

    With ie
        .Visible = True
        .navigate "http://adb.in/ser/"

        Do While .busy
            DoEvents
        Loop

        Do While .readystate <> 4
            DoEvents
        Loop
        Set txtUname = .document.getelementbyid("txtUname")
        txtUname.Value = "Amarindaz"
        Set txtEmail = .document.getelementbyid("txtEmail")
        txtEmail.Value = "Amarindaz@gmail.com"
        Application.Wait Now + TimeValue("00:00:15")
        .Quit
    End With
End Sub

1 个答案:

答案 0 :(得分:0)

我建议不要在代码中使用wait。只需将代码分成两部分,让用户在两者之间进行验证码。

  1. 代码:预填充登录表单。 (你已经有了这个)。什么都不做。
  2. 用户手动输入验证码。
  3. 代码:从网站内部获取所需的信息。 (新代码)。成功登录后(在验证码之后)需要调用/调用。
  4. 要做到这一点,您只需要更持久地存储IE对象(使用Static或Public关键字,而不是Dim)。这将允许您在用户键入验证码后继续使用相同的对象(浏览器窗口)。

    为了让您了解我的意思,这里是一个伪代码,利用公共模块级别ie变量。只需复制到空白模块:

    Public ie As Object
    
    Sub login()
    
        Set ie = CreateObject("internetexplorer.application")
        ie.Visible = True
        ie.navigate "http://adb.in/ser/"
        'all the other login stuff. filling in the input elements
    
    End Sub
    
    Sub query() 'Just for demonstration, nothing useful going on here :)
        ie.Visible = False
        ie.Visible = True
    End Sub