Titre du sujet : Re: Piloter des pages intranet est-il possible? par JackyAmiens le 12/03/2008 11:41:28
Mon problème était le suivant Accéder à une page Html d'un intranet pour récupérer un fichier csv au format Txt via excel.
1-Identification sur la page d'entrée 2-passer à la page d'interrogation (formulaire) qui génére un tableau avec lien sur un fichier téléchargeable. 3-sauvegarder le fichier téléchargeable sur un disque local. l'opération 2 et 3 devant être (pour l'instant) faite 4 fois.
Grace à MichelXld, j'ai compris comment piloter html pour saisir des données dans des zones de texte, radio ou combobox (liste déroulante).
l'instruction IE.readyState permet de savoir si la page est chargé en cache sur le micro.
J'ai dû ajouter une temporisation pour pouvoir aller lire le code HTML générer (intranet + page ASP) qui termine de se charge dans le navigateur après readyState=4.
Après validation des éléments du formulaire, la page générée contient en code HTML l'adresse du fichier à télécharge.
répérage du code grace à MaPageHtml.getElementsByTagName("a").Item(1).outerHTML le 1 correspond au nombre URL présent dans le code HTML.
Mon objectif est atteind à 100%, merci à myDearFriend et à vous pour l'aide obtenu.
Ci-dessous le code complet de mon projet ( à ma sauce of course)
Public IE As InternetExplorer
Public HlmIdent, HlmMdp, HlmBase, HlmBouton, Hlmddeb, Hlmdfin, Hlmgo As HTMLElementCollection
Public MaPageHtml As HTMLDocument
Public DateDebut, DateFin As String
Sub Calabrio()
'Auteur Jacky Bruiant
'Programme principale
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate ("http://monacces/page1.asp")
'Attendre l'affichage de l'info htlm terminé dans IE
Do Until IE.readyState = 4 '
DoEvents
Loop
'Liste des paramètres des pages HTML
Set MaPageHtml = IE.document
Set HlmIdent = MaPageHtml.getElementsByName("login").Item
Set HlmMdp = MaPageHtml.getElementsByName("pwd").Item
Set HlmBase = MaPageHtml.getElementsByName("connexion").Item(0)
Set HlmBouton = MaPageHtml.getElementsByName("Submit2").Item
'Lecture et mise en forme de la période d'extraction
DateDebut = DateSerial(Year(Range("ddebut").Value), Month(Range("ddebut").Value), 1)
datedfin = DateSerial(Year(Range("ddebut").Value), Month(Range("ddebut").Value) + 1, 1) - 1
DateDebut = CStr(DateDebut)
DateFin = CStr(datedfin)
'Habilitation d'access
HlmIdent.Value = "Identifiant"
HlmMdp.Value = "MdP"
HlmBase.setAttribute "checked", "true"
HlmBouton.Click
Call PauseWait(4)
'Rapatriement des données Ja
Exfunct = goHTML(7, "Cmiens")
Exfunct = goHTML(8, "CAmiens")
Exfunct = goHTML(11, "CLille")
Exfunct = goHTML(19, "CTroyes")
Call PauseWait(2)
IE.Quit
gbox = MsgBox("Rapatriement achevé", vbInformation, "Source Calabrio")
End Sub
'********************************************************************************
Function sauvcalabrio(urlnum, lienurl)
'
' Bruiant J.
'realise par l'enregistreur de macro
Application.DisplayAlerts = False 'empêche l'apparition des boites de dialogue de confirmation
Workbooks.OpenText Filename:= _
lienurl, _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), TrailingMinusNumbers _
:=True
'Sauvegarder les données au format TXT avec un séparateur ;
ActiveWorkbook.SaveAs Filename:="F:Projetdonnees" & urlnum & ".txt", _
FileFormat:=xlCSV, CreateBackup:=False
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
Application.DisplayAlerts = True 'réactive les message d'alertes
End Function
'**********************************************************************************
Sub PauseWait(tps)
'
' Attendre x secondes (voir l'aide en ligne d'Excel)
'inspiration du net
Lheure = Hour(Now())
LesMinutes = Minute(Now())
LesSecondes = Second(Now()) + tps 'tps le temps de pause
waitTime = TimeSerial(LHeure, LesMinutes, LesSecondes)
Application.Wait waitTime
End Sub
'**********************************************************************************
Public Function goHTML(position, NomFichier)
'fonction de génération de la page html contenant le code du fichier de téléchargement
Set MaPageHtml = IE.document
IE.navigate ("http://monacces/page2.asp?idsite=370") 'page de saisie des informations
'Attendre l'affichage l'info htlm terminé
Do Until IE.readyState = 4
DoEvents
Loop
Call PauseWait(2)
'Selection de l'équipe ou 0 est le premier élément de la liste
Set HlmSelSite = MaPageHtml.getElementsByTagName("select")
HlmSelSite(1).selectedIndex = position
Set Hlmgo = MaPageHtml.getElementsByName("go").Item 'Image fléche de validation données
Set Hlmddeb = MaPageHtml.getElementsByName("ddeb").Item 'date de début
Set Hlmdfin = MaPageHtml.getElementsByName("dfin").Item 'date de fin
'Attendre l'affichage de l'info htlm terminé dans IE
Do Until IE.readyState = 4
DoEvents
Loop
'Saisie de la période d'extration des JA
Hlmddeb.Value = DateDebut
Hlmdfin.Value = DateFin
Set HlmImgok = MaPageHtml.getElementsByName("go").Item
HlmImgok.Click
'Attendre l'affichage complet de la page demandée
Do Until IE.readyState = 4
DoEvents
Loop
Call PauseWait(15)
'Repérage le l'URL du fichier dans le code html
letxt = MaPageHtml.getElementsByTagName("a").Item(1).outerHTML
'suppression de la chaine devant le numéro du fichier
letxt = Replace(letxt, "<A class=lienorange_10 href=""../upload/temp/extraction", "")
'suppression de la chaine après le numéro du fichier
letxt = Replace(letxt, ".txt"" target=_blank>Télécharger le fichier TXT</A>", "")
lelien = " http://monacces/upload/temp/extraction" & letxt & ".txt" 'constitution de l'URL de téléchargement
exfonct = sauvcalabrio(NomFichier, lelien) 'recupération du fichier
Call PauseWait(2)
End Function
|