Accueil > > > CONNECTION INTERNET VIA VBA
CONNECTION INTERNET VIA VBA
Information sur la source
Description
Ce code permettra de se connecter à Internet Explorer et d'y naviguer ... récupérer des données ou y envoyer des données. Attention je n'ai pa insérer toutes les fonctions, et il est nécessaire de connaitre la stucture du HTML afin de pouvoir optimiser votre code. Attention, ceci est ma première source, alors je vous demanderais d'être critique. Merci à tous ceux qui la lirons.
Source
- 'Il est nécessaire de référencer IE dans votre programme dans le VBA
- 'outils - références - référencer les outils ... sinon ca marche pas ....
-
-
- 'Code à insérer dans un module
-
- Public Etat As String
- Public IE As New InternetExplorer '****** Internet Explorer
- Public LibelleLien As String '****** Libelle du lien IE
-
-
-
- Sub ConnectionIE()
-
- 'définition de IE en tant que nouvel Objet
- 'rend IE visible
- IE.Visible = True
- 'IE navique vers le site demandé
- IE.Navigate2 "http://www.VotreSite.fr/"
-
- 'Fonction Timer ... regardé plus bas ... la fonction est décrite
- If Timer = False Then GoTo Error_Timer
-
- 'défini la variable de la page web.
- Dim htmlDoc As HTMLDocument
- Set htmlDoc = IE.document
- While htmlDoc.Title <> "Nom de la page Web"
- Wend
-
- 'la variable htmlDoc peut prendre les attributs suivants :
- IETxt = htmlDoc.documentElement.innerText 'récupère le texte de la page HTML
- IESource = htmlDoc.documentElement.innerHTML 'récupère le code source de la page HTML
- IETitre = htmlDoc.Title 'récupère le Titre du document HTML
- IENom = htmlDoc.Name 'récupère le Nom "Microsoft Internet Explorer"
-
-
- '**************** Défini le un controle de la page **************************
- Dim IECtrl As HTMLFormElement
- Set IECtrl = htmlDoc.forms(0).'Nom du controle
- 'Insert une valeur dans un controle dans la page en cours
- IECtrl.Value = "La Valeur Que je veux y mettre"
-
- 'récupère une valeur d'un controle de la page en cours et le met dans une cellule
- Selection = IECtrl.Value
-
- '**************** Défini l'envoi de la page ne cours (simulation de la touche entrer *************************
- Dim IESubmit As HTMLFormElement
- Set IESubmit = htmlDoc.forms(0)
- IESubmit.submit
- If Timer = False Then GoTo Error_Timer
-
- '**************** Ckiquer sur un lien IE************************
- If CliquerLien("libellé du lien sur IE", "Nom de la page suivante") = False Then Exit Sub
-
-
- '**************** Arret Programme correctement ************************
- IE_Fin:
- Application.Visible = True
- MsgBox "Arrêt du programme", vbInformation, "Fin"
-
- '**************** Arret Programme Error Timer ************************
- Error_Timer:
- IE.Quit
- Set IE = Nothing
- End Sub
-
-
- '**********************************************************************************
- '**************************** FONCTION TIMER DE IE ************************
- '**********************************************************************************
- Function Timer() As Boolean
- On Error GoTo Error_IE_Timer
- While IE.readyState <> READYSTATE_COMPLETE
- Wend
- While IE.Busy
- Wend
- Timer = True
- Exit Function
- Error_IE_Timer:
- Timer = False
- MsgBox "Arrêt de Internet Explorer dû à une erreur interne de l'application", vbInformation, "Erreur Application Internet Explorer"
- End Function
-
- '**********************************************************************************
- '**************************** FONCTION Cliquer sur lien IE ************************
- '**********************************************************************************
- Public Function CliquerLien(LibelleLien As String, Optional NomPageSuivante As String) As Boolean
- On Error GoTo ErrLien 'si erreur av ç la gestion de l'erreur
- Dim ObjLien As HTMLLinkElement (défini les liens de la page en Objet
- For Each ObjLien In IE.document.Links 'pour chaque lien de la page active
- If ObjLien.innerText = LibelleLien Then 'si le text du lien = au Libellé visible sur la page alors
- TextePage = IE.document.documentElement.innerText
- ObjLien.Click 'clique sur le lien
- If Timer = False Then GoTo ErrTimer 'gestion du time sur IE
- If NomPageSuivante <> "" Then 'si le nom de la page a été renseigné dnas la fonction alors
- While IE.document.Title <> NomPageSuivante 'attends jusqua ce que la page change (2e gestion du passage de la page qui peuit etre tres utile)
- Wend
- Else
- While IE.document.documentElement.innerText <> TextePage
- Wend
- End If
- CliquerLien = True: Exit Function 'tout c'est bien passer alors la fonction CliquerLien prend la TRUE
- Exit For
- End If
- Next ObjLien
-
-
- 'Sinon prend la valur FALSE
- CliquerLien = False
- 'Permet de demander à l'utilisateur s'il désire terminé l'action manuellement dans le cas ou cela n'a pas fonctionné
- Message = "Une erreur est surevenue sur le lien : " & LibelleLien & "."
- Message = Message & vbCrLf & "Oui : Je souhaite terminer l'action manuellement ?"
- Message = Message & vbCrLf & "Non : Je souhaite terminer le programme ?"
- If MsgBox(Message, vbQuestion + vbYesNo, "Erreur sur le lien : < " & LibelleLien & " >") = vbYes Then
- TextePage = IE.document.documentElement.innerText
- While TextePage = IE.document.documentElement.innerText
- Wend
- If Timer = False Then GoTo ErrTimer
- CliquerLien = True: Exit Function
- End If
-
- ErrLien:
- CliquerLien = False: Exit Function
-
- ErrTimer:
-
- IE.Quit
- Set IE = Nothing: Exit Function
-
- End Function
-
-
- '**********************************************************************************
- '********************** Fonction RECUPERER TEXTE sur IE par Valeur Texte **********
- '**********************************************************************************
- Public Function RécupérerTexte(TexteARechercher As String, TexteARécupérer As String) As String
- Dim MaPosition As Variant
- Dim TextePage As String
-
- On Error GoTo ErrRécupérerTexte
-
- TextePage = IE.document.documentElement.innerText 'récuper le texte entier de la page IE (faite un test avec msgbox TextePage)
- MaPosition = InStr(1, TextePage, TexteARechercher)
- RécupérerTexte = Mid(TextePage, MaPosition + Len(TexteARechercher), Len(TexteARécupérer))
- Exit Function
-
-
-
- ErrRécupérerTexte:
- SearchTexte = False
- End Function
'Il est nécessaire de référencer IE dans votre programme dans le VBA
'outils - références - référencer les outils ... sinon ca marche pas ....
'Code à insérer dans un module
Public Etat As String
Public IE As New InternetExplorer '****** Internet Explorer
Public LibelleLien As String '****** Libelle du lien IE
Sub ConnectionIE()
'définition de IE en tant que nouvel Objet
'rend IE visible
IE.Visible = True
'IE navique vers le site demandé
IE.Navigate2 "http://www.VotreSite.fr/"
'Fonction Timer ... regardé plus bas ... la fonction est décrite
If Timer = False Then GoTo Error_Timer
'défini la variable de la page web.
Dim htmlDoc As HTMLDocument
Set htmlDoc = IE.document
While htmlDoc.Title <> "Nom de la page Web"
Wend
'la variable htmlDoc peut prendre les attributs suivants :
IETxt = htmlDoc.documentElement.innerText 'récupère le texte de la page HTML
IESource = htmlDoc.documentElement.innerHTML 'récupère le code source de la page HTML
IETitre = htmlDoc.Title 'récupère le Titre du document HTML
IENom = htmlDoc.Name 'récupère le Nom "Microsoft Internet Explorer"
'**************** Défini le un controle de la page **************************
Dim IECtrl As HTMLFormElement
Set IECtrl = htmlDoc.forms(0).'Nom du controle
'Insert une valeur dans un controle dans la page en cours
IECtrl.Value = "La Valeur Que je veux y mettre"
'récupère une valeur d'un controle de la page en cours et le met dans une cellule
Selection = IECtrl.Value
'**************** Défini l'envoi de la page ne cours (simulation de la touche entrer *************************
Dim IESubmit As HTMLFormElement
Set IESubmit = htmlDoc.forms(0)
IESubmit.submit
If Timer = False Then GoTo Error_Timer
'**************** Ckiquer sur un lien IE************************
If CliquerLien("libellé du lien sur IE", "Nom de la page suivante") = False Then Exit Sub
'**************** Arret Programme correctement ************************
IE_Fin:
Application.Visible = True
MsgBox "Arrêt du programme", vbInformation, "Fin"
'**************** Arret Programme Error Timer ************************
Error_Timer:
IE.Quit
Set IE = Nothing
End Sub
'**********************************************************************************
'**************************** FONCTION TIMER DE IE ************************
'**********************************************************************************
Function Timer() As Boolean
On Error GoTo Error_IE_Timer
While IE.readyState <> READYSTATE_COMPLETE
Wend
While IE.Busy
Wend
Timer = True
Exit Function
Error_IE_Timer:
Timer = False
MsgBox "Arrêt de Internet Explorer dû à une erreur interne de l'application", vbInformation, "Erreur Application Internet Explorer"
End Function
'**********************************************************************************
'**************************** FONCTION Cliquer sur lien IE ************************
'**********************************************************************************
Public Function CliquerLien(LibelleLien As String, Optional NomPageSuivante As String) As Boolean
On Error GoTo ErrLien 'si erreur av ç la gestion de l'erreur
Dim ObjLien As HTMLLinkElement (défini les liens de la page en Objet
For Each ObjLien In IE.document.Links 'pour chaque lien de la page active
If ObjLien.innerText = LibelleLien Then 'si le text du lien = au Libellé visible sur la page alors
TextePage = IE.document.documentElement.innerText
ObjLien.Click 'clique sur le lien
If Timer = False Then GoTo ErrTimer 'gestion du time sur IE
If NomPageSuivante <> "" Then 'si le nom de la page a été renseigné dnas la fonction alors
While IE.document.Title <> NomPageSuivante 'attends jusqua ce que la page change (2e gestion du passage de la page qui peuit etre tres utile)
Wend
Else
While IE.document.documentElement.innerText <> TextePage
Wend
End If
CliquerLien = True: Exit Function 'tout c'est bien passer alors la fonction CliquerLien prend la TRUE
Exit For
End If
Next ObjLien
'Sinon prend la valur FALSE
CliquerLien = False
'Permet de demander à l'utilisateur s'il désire terminé l'action manuellement dans le cas ou cela n'a pas fonctionné
Message = "Une erreur est surevenue sur le lien : " & LibelleLien & "."
Message = Message & vbCrLf & "Oui : Je souhaite terminer l'action manuellement ?"
Message = Message & vbCrLf & "Non : Je souhaite terminer le programme ?"
If MsgBox(Message, vbQuestion + vbYesNo, "Erreur sur le lien : < " & LibelleLien & " >") = vbYes Then
TextePage = IE.document.documentElement.innerText
While TextePage = IE.document.documentElement.innerText
Wend
If Timer = False Then GoTo ErrTimer
CliquerLien = True: Exit Function
End If
ErrLien:
CliquerLien = False: Exit Function
ErrTimer:
IE.Quit
Set IE = Nothing: Exit Function
End Function
'**********************************************************************************
'********************** Fonction RECUPERER TEXTE sur IE par Valeur Texte **********
'**********************************************************************************
Public Function RécupérerTexte(TexteARechercher As String, TexteARécupérer As String) As String
Dim MaPosition As Variant
Dim TextePage As String
On Error GoTo ErrRécupérerTexte
TextePage = IE.document.documentElement.innerText 'récuper le texte entier de la page IE (faite un test avec msgbox TextePage)
MaPosition = InStr(1, TextePage, TexteARechercher)
RécupérerTexte = Mid(TextePage, MaPosition + Len(TexteARechercher), Len(TexteARécupérer))
Exit Function
ErrRécupérerTexte:
SearchTexte = False
End Function
Conclusion
Vous pouvez définir toute vos fonctions sur IE, mais il n'y a pas de fonction natives. Vous devrez surement modifier vos fonctions par rapport à la page HTML.
Les bugs ... il peut y en avoir ... Le plus important est de connaitre le nom de chaque champs dans votre page.
En espérant que cela pourra vous aider ...
ChaPaTa
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Lien internet en VBscript dans un formulaire [ par Piero69 ]
Bonjour,je crée actuellement des formulaires personnalisés sous outlook 2000.Quelqu'un saurait créer un lien internet inclus dans le formulaire, aille
ouvrir un lien internet sous vb [ par Sokar ]
donc c pour savoir s'il existe un objet, une methode, fonction... de vb pour kil reconnaisse un lien internet et donc ke lon puisse l'ouvrir depuis vb
internet exploreur : lien du genre "irc://" [ par neocracker ]
j'aimerais savoir comment lancer mon programme a l'aide d'un lien du genre "irc://"merci d'avanceneocracker
Pb de formulaire en DHTML avec VB6 [ par sergebab ]
Bonjour,j'ai créé un formulaire en DHTML avec VB6 pour mon siteinternet que j'héberge sur mon serveur donc, la page fonctionne à partir de mon ordineu
Internet Explorer [ par zibou ]
Bonjours,Je voudrais que lorsque l'on clic sur un lien d'une page sur un controle webbrowser , le lien est mis dans un textbox ( text1 ) .
extraire lien avec internet control de Ms [ par Gilloub ]
Qui pourait me donner la methode pour extraire les lien d'un site avec le contrôle internet control
ASP et liens [ par enovia ]
Bonjour,j'ai un prog asp qui permet de lister tous les fichiers d'un repertoire. Lors du clic sur ce lien, il ouvre un formulaire pour faire de la sai
lien internet [ par psychodingue ]
Voilà, j'ai un prob avec les liens internet, je fais comme ça:Public Sub gotoweb(url)Dim Success As LongSuccess = ShellExecute(2, vbNullString, url, v
Lien vers Internet [ par Flash451 ]
Comment mettre un lien vers une page Web dans une application
Lien DDE avec un serveur internet [ par Stpierre39 ]
Je suis connecté à un serveur et avec des liens DDE, j'importe dans des contrôle Label ou contrôle Texte....etc des données sans problème grâce aux pr
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
LISTER KEYS.KEYLISTER KEYS.KEY par Onin42
Cliquez pour lire la suite par Onin42
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|