2017-09-23 23 views
1

私はVBAを初めて使っています。 ウェブサイトへのログイン用にvbaを作成して情報を取得していますが、ログインしようとするとcaptchaが必要です。キャプチャが入力されフォームが提出されるまで待つコードが必要です。これについて私を助けてください。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 = "[email protected]" 
     Application.Wait Now + TimeValue("00:00:15") 
     .Quit 
    End With 
End Sub 

答えて

0

私はコード内でwaitを使用しないことをお勧めします。コードを2つの部分に分割して、ユーザーがその間でキャプチャを行うようにします。

  1. コード:ログインフォームをあらかじめ入力してください。 (あなたはすでにこれを持っています)。何もしないでください。
  2. ユーザーが手動でcaptchaを入力します。
  3. コード:ウェブサイト内から必要な情報を取得します。 (新しいコード)。成功したログインの後に呼び出される/呼び出される必要があります(captchaの後)。

これを行うには、(Dimの代わりにStaticまたはPublicキーワードを使用して)IEオブジェクトをより永続的に保存するだけです。これにより、ユーザーがキャプチャを入力した後に同じオブジェクト(ブラウザウィンドウ)を使用し続けることができます。

私は何を意味するのかを知るために、パブリックモジュールレベル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 
関連する問題