2017-03-28 1 views
0

のために使用してIEのウィンドウをキャプチャ、私は窓をキャプチャし、さらにナビゲートする必要がある必要があり、私は以下のコードを使用してキャプチャすることができる午前、各ウィンドウのシェルアプリケーション

With objIE 
    Application.Wait (Now + TimeValue("00:00:05")) 
    Set TBL = .document.getElementById("payersitecredential-table") 
    Set PRV = TBL.getElementsByTagName("A"): PRV.Item(1).Click 
    'once the above code runs, it opens up an another window and i need to set that window as object. 
    Application.Wait (Now + TimeValue("00:00:20")) 
End With 
For Each WINDW In CreateObject("Shell.Application").Windows 
    If WINDW.Name = "Internet Explorer" Then 
     If InStr(WINDW.LocationURL, "newmmis") <> 0 Then 
      Set objIE1 = WINDW 
      Exit For 
     ElseIf InStr(WINDW.LocationURL, "https://www.example.com") <> 0 Then 
      Set ClsWindw = WINDW 
      ClsWindw.Quit 
      GoTo ThEnD 
     End If 
    End If 
Next 
With objIE1 
    Do While .Busy Or .readyState <> 4 'this is the place i get error as object required 
     DoEvents 
    Loop 
    Application.Wait (Now + TimeValue("00:00:05")) 
    .document.getElementById("InquireStatus").Click 
End With 

私は60の待機時間を保持していますURLの読み込みに秒単位の時間がかかることがありますが、URLを読み込むのに時間がかかることがあります。オブジェクトを設定できない場合は、これを把握して解決策を教えてください。

+1

VBAリファレンスから見ると、それはすっきりしています。読書が完全であること、つまりビジーではないのを待つことができます。 –

+0

あなたの返信のためにnathanに感謝しますが、ウェブサイトのリンクをクリックすると、ロードに時間がかかる別のウィンドウがポップアップします。そのウィンドウをキャプチャし、さらにナビゲーションするオブジェクトとして設定する必要があります。 –

答えて

0

私は、そうのように、これはURLに基​​づいてIEを見つけて、それは準備ができて、リターンになるまで待ちます、上記を利用するであろう私のコメント

Sub ex() 

Dim ie As SHDocVw.InternetExplorer 
Dim wins As New SHDocVw.ShellWindows 

For Each ie In wins 
    Debug.Print ie.Document.URL, ie.ReadyState, ie.Busy 
Next ie 

End Sub 

EDIT

の支援でこれを見てくださいたとえば、set IE=GetMeReadyIE("http://stackoverflow.com/questions/tagged/vba")を使用します。

Function GetMeReadyIE(strURL As String) As SHDocVw.InternetExplorer 

Dim ie As SHDocVw.InternetExplorer 
Dim wins As New SHDocVw.ShellWindows 

For Each ie In wins 
    If ie.Document.URL = strURL Then 
     While ie.ReadyState <> READYSTATE_COMPLETE Or ie.Busy 
      DoEvents 
     Wend 
     Set GetMeReadyIE = ie 
     Exit For 
    End If 
Next ie 

End Function 
+0

もう一度nathanに感謝します。しかし、私はこのコンセプトを初めて熟知しているので、上記のコードのどこにURLを記述する必要がありますか?私は以下のように試しましたが、 "オブジェクトはこの種のプロパティをサポートしていません"というエラーが表示されています**それぞれの場合は勝ちです。 Debug.Print ie.document.URL、 "https:\\ www.example.com \ 、ie.readyState、ie.Busy 次は** –

+0

です。参照をロードしましたか? –

+0

はいネイサン、私は参照を有効にしましたMicrosoft Officeインターネットコントロール、htmlライブラリ –

関連する問題