web-dev-qa-db-fra.com

Excel VBA "La méthode 'Document' de l'objet 'IWebBrowser2' a échoué"

J'essaie d'automatiser la soumission d'un formulaire dans Excel pour le travail et j'ai des problèmes avec les bases. Je continue à recevoir le message d'erreur:

"La méthode 'Document' de l'objet 'IWebBrowser2' a échoué"

Avec le code tel quel, et si j'inclus la pièce Ou dans le contrôle en attente, j'obtiens l'erreur

"Erreur d'automatisation L'objet invoqué s'est déconnecté de ses clients."

Je ne sais pas quoi faire ici, j'ai cherché partout des solutions. Ce code est destiné à faire éventuellement plus que cela, mais il échoue toujours au premier essai de 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
5
James Beaulieu

J'ai rencontré ce même problème il y a un moment. Utilisez Internet Explorer à un niveau d'intégrité moyen. InternetExplorer utilise par défaut un niveau d’intégrité faible qui, si vous le faites sur un intranet local au travail, donnera parfois le deuxième message d’erreur que vous voyez ci-dessus. Cliquez sur ici pour plus de lecture à ce sujet. J'ai modifié votre code ci-dessous. S'il vous plaît laissez-moi savoir si cela aide.

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

Mémorisez les références des contrôles Internet de Microsoft et, en fonction de vos intentions, de la bibliothèque d'objets Microsoft HTML.

8
Justin Schwebs

La méthode ci-dessous a résolu mon problème pour cette erreur: Fermez toutes les instances de l'Explorateur via le «Gestionnaire de tâches» et essayez d'exécuter le code qui fonctionnera.

0
Mangesh Vhatkar

Pas exactement comme ci-dessus mais en quelque sorte similaire, le code suivant a résolu mon problème:

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

Il suffit de le placer avant la ligne sur laquelle vous souhaitez commencer à travailler avec le contenu. Pour obtenir plus d'informations sur son fonctionnement, vous pouvez vérifier ici

0
Reza Iranpour