Come verificare il caricamento di una pagina con internet explorer

Anonimo
2013-05-20T09:54:04+00:00

Un saluto a tutti,

quelle volte che in VBA si utilizza un'istanza di internet explorer, puntualmente si verifica il problema di determinare quando una pagina è stata correttamente caricata ed è disponibile per le successive elaborazioni.

I vari Busy, ReadyState e Document non sembrano offrire una garanzia assoluta del caricamento della pagina. E così, unico rimedio è inserire delle pause nel codice. Ma per essere sicuri di contemplare tutti i possibili ritardi, le pause inserite sono di solito ... lunghette. Questo metodo, oltre che rallentare l'esecuzione nella maggior parte dei casi, comunque non garantisce un'attendibilità 'scientifica' dell'avvenuto caricamento.

Qualcuno ha suggerimenti, alternative o consigli?

Grazie,

Andrea.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-05-20T10:30:04+00:00

....

*Come* lo utilizzi?

Grazie.

Ad esempio così:


Sub LoginAndDownload()

Dim ie As SHDocVw.InternetExplorer

Set ie = New SHDocVw.InternetExplorer

ie.visible = True

'---------- make login

ie.Navigate "http://www.xxx.it"

Call waitIE(ie)

With ie.document.forms("xxx")

.item("LOGIN").Value = "user"

.item("PASSWD").Value = "password"

.submit

End With

'---------- navigate throw pages

ie.Navigate "http://www.xxx/yyy.it"

Call waitIE(ie)

'---------- setup query

With ie.document.forms("yyy")

.item("dataDal").Value = Format(DateSerial(2013, 1, 1), "dd/mm/yyyy")

.item("dataAl").Value = Format(DateSerial(2013, 1, 31), "dd/mm/yyyy")

.submit

End With

Call waitIE(ie)

'---------- exit

ie.Quit

Set ie = Nothing

End Sub

Sub waitIE(ie As SHDocVw.InternetExplorer)

Do

If Not ie.Busy And ie.ReadyState = 4 Then

Application.Wait (Now + TimeValue("00:00:01"))

If Not ie.Busy And ie.ReadyState = 4 Then Exit Do

End If

DoEvents

Loop

End Sub


Grazie a te Mauro,

Andrea.

La risposta è stata utile?

0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2013-05-20T10:10:27+00:00

    quelle volte che in VBA si utilizza un'istanza di internet explorer, puntualmente si verifica il problema di determinare quando una pagina è stata correttamente caricata ed è disponibile per le successive elaborazioni.

    *Come* lo utilizzi?

    Grazie.

    La risposta è stata utile?

    0 commenti Nessun commento