Recupero Web Query Dati senza interruzione

Nikolas ha sviluppato una query Web per recuperare dati esterni su base regolare. Il problema è che lui riceve spesso un "... Impossibile aprire la pagina web" messaggio di errore quando si esegue la query Web. Questo messaggio appare quando c'è qualche interruzione del collegamento Internet tra Nikolas e il server Web, e ha bisogno di fare clic su OK nel messaggio di errore in modo che Excel continuerà.

Questo presenta un problema quando Nikolas è lontano dal suo computer perché può significare che la query Web non raccoglie tutti i dati che dovrebbe essere la causa si è in paziente attesa per il pulsante OK per essere cliccato quando si imbatte in un problema. Nikolas vuole un modo per raccontare la query Web per non visualizzare il messaggio e solo tornare ad aspettare se non in grado di connessione sul tentativo attuale.

Purtroppo, non c'è modo di dire Excel per fare quello che vuoi. Quando appare il messaggio "Impossibile aprire la pagina web ...", è praticamente impossibile eliminare il messaggio. L'unica soluzione è quella di cercare di creare una macro che funziona in tutto il problema. Ad esempio, si potrebbe sviluppare una macro che crea un'istanza di Internet Explorer (che non ha il problema) per verificare un errore raggiungere la pagina Web. La seguente macro implementa questo approccio.

Option Explicit
'Declare API sonno
Private Declare Sub sonno Lib "kernel32" (ByVal nMilliseconds As Long)

Funzione GetData (strStartURL As String) As String
Tentativo Dim As Long
Dim Connected Come booleano
Dim ieDocNew Come MSHTML.HTMLDocument

GetData = "N / A"
Tentativo = 0

riprovare:
Tentativo = Tentativo + 1

'Creare riferimenti agli oggetti del browser e aprire una finestra di IE
Dim ieNew come nuovo InternetExplorer
'Pagina Load
Con ieNew
.Visible = True vetrina '
pagina aperta .navigate strStartURL '
Mentre Non .readyState = READYSTATE_COMPLETE
Dormire 500 'attendere 1/2 sec prima di riprovare
Wend
End With

'La pagina deve essere aperta in IE, il tempo per l'analisi
'Creare documenti modello oggetto riferimenti
Set ieDocNew = ieNew.Document

Se ieDocNew.Scripts.Length = 13 _
E ieNew.LocationName = "Microsoft Excel Tips" _
Poi
Collegato = True
GetData = "dati acquisiti con successo"

'Questo è dove si fa qualcosa con i dati
End If

'Clean up oggetti IE
Set ieDocNew = Nothing
ieNew.Quit
Set ieNew = Nothing
DoEvents
Se Tentativo <10 e non collegato Then GoTo riprovare
End Function

Si noti che questa macro richiede qualche configurazione all'interno dell'interfaccia VBA per funzionare correttamente. In particolare, è necessario scegliere Riferimenti dal menu Strumenti e fare in modo che il progetto include riferimenti alla libreria di oggetti Microsoft HTML e Microsoft Internet Controls.

Che la macro non è quello di utilizzare IE per collegarsi all'URL passato alla funzione (in strStartURL) e poi prendete il contenuto che si trova lì. Se la connessione è riuscita, quindi collegato è impostato su True e si può analizzare e utilizzare i dati sul sito. La funzione, come scritto, ripassa "i dati acquisiti con successo" alla routine chiamata, ma si potrebbe facilmente passare indietro qualche valore prese dal sito remoto. Tale valore potrebbe poi essere farcito, ma la routine di chiamata, in un foglio di lavoro.

Nota, così, che la funzione fa alcune analisi rudimentale sulla pagina cattura, e prende in considerazione solo la connessione con successo se trova qualche formulazione prevista nel titolo della pagina trovata alla URL.

Per avere un'idea di come funziona la macro, utilizzare alcune macro come il seguente:

Sub TEST_GetData1 ()
MsgBox GetData ("http://excel.tips.net")
End Sub

Sub TEST_GetData2 ()
MsgBox GetData ("http://excel.tipsxx.net")
End Sub

Sub TEST_GetData3 ()
MsgBox GetData ("http://excel.tips.net/junk")
End Sub

Il primo dovrebbe funzionare; il secondo due dovrebbe visualizzare un messaggio che dice "N / A".

ExcelTips è la vostra fonte per la formazione Microsoft Excel conveniente. Questo suggerimento (3233) si applica a Microsoft Excel 97, 2000, 2002, e 2003. È possibile trovare una versione di questo suggerimento per l'interfaccia ribbon di Excel (Excel 2007 e versioni successive) qui: Recupero Web Query Dati senza interruzione.