2015-05-06 8 views
5

Sto tentando di automatizzare l'invio di un modulo in Excel per lavoro e ho problemi con le nozioni di base. Continuo a ricevere il messaggio di errore:Excel VBA "Metodo" Documento "dell'oggetto" IWebBrowser2 "non riuscito"

"Method 'Document' of object 'IWebBrowser2' failed"

Con il codice come è, e se includo la parte o nel controllo di attesa, ottengo l'errore

"Automation Error The object invoked has disconnected from its clients."

io non sono sicuro di cosa fai qui, ho cercato dappertutto soluzioni. Questo codice è destinato alla fine a fare più di questo, ma continua a fallire al primo tentativo di getElementsByTagName.

Sub GoToWebsiteTest() 
Dim appIE As Object 'Internet Explorer 
Set appIE = Nothing 
Dim objElement As Object 
Dim objCollection As Object 

If appIE Is Nothing Then Set appIE = CreateObject("InternetExplorer.Application") 
sURL = *link* 
With appIE 
    .Visible = True 
    .Navigate sURL 
End With 

Do While appIE.Busy ' Or appIE.ReadyState <> 4 
    DoEvents 
Loop 

Set objCollection = appIE.Document.getElementsByTagName("input") 

Set appIE = Nothing 
End Sub 

risposta

6

Mi sono imbattuto in questo stesso problema un po 'di tempo fa. Usa Internet Explorer a un livello di integrità medio. InternetExplorer ha come impostazione predefinita un livello di integrità basso che, se si esegue questa operazione su una intranet locale al lavoro, a volte fornirà il secondo messaggio di errore visualizzato in precedenza. Fare clic su here per ulteriori informazioni su questo. Ho modificato il tuo codice qui sotto. Per favore fatemi sapere se questo aiuta.

Sub GoToWebsiteTest() 
Dim appIE As InternetExplorerMedium 
'Set appIE = Nothing 
Dim objElement As Object 
Dim objCollection As Object 

Set appIE = New InternetExplorerMedium 
sURL = "http://example.com" 
With appIE 
    .Navigate sURL 
    .Visible = True 
End With 

Do While appIE.Busy Or appIE.ReadyState <> 4 
    DoEvents 
Loop 

Set objCollection = appIE.Document.getElementsByTagName("input") 

Set appIE = Nothing 
End Sub 

Ricordate riferimenti per Microsoft Internet Controls, e seconda di ciò che si pensa di fare di più, Microsoft HTML Object Library

+0

Grazie mille per la risposta, funziona ora! (quella parte almeno, colpendo un altro problema dopo quello: /) –

0

Non esattamente come sopra codice, ma in qualche modo simile, il seguente codice risolto il mio problema:

Do 
Loop Until ie.readystate = 3 
Do 
Loop Until ie.readystate = 4 

Basta metterlo davanti alla linea per iniziare a lavorare con i contenuti. Per ottenere maggiori informazioni su come funziona si può controllare here

0

Il metodo seguito risolto il mio problema di questo errore: Chiudere tutte le istanze di Explorer tramite 'Task Manager' e cercare di eseguire il codice che funzionerà.