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
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.
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.
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