download d'un fichier sans passer par IE en vba

Le
Michel Angelosanto
Bonjour,

j'enregistre automatiquement des fichier avec le code suivant, or au bureau,
le fait que ça demande un login et pass pour sortir de l'intranet, ça ne
marche pas.
Y a t-il une possibilité de contrer ce problème?

Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA"
(ByVal pCaller As Long, ByVal szUrl As String, ByVal szFileName As String,
ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Function DownloadPage(ByVal url As String, ByVal FileName As String) As
Boolean
Dim done As Boolean
Dim value As Long
On Error Resume Next
done = True
If Dir$(FileName) <> "" Then
Kill FileName
End If
value = URLDownloadToFile(0, url, FileName, 0, 0)
If Dir$(FileName) = "" Then
done = False
End If
DownloadPage = done
End Function

Private Sub enregistre_fichier()
Dim bRet As Boolean
Dim sURL As String
Dim sFileName As String, adresse As String
Dim buf As String
buf = String(1, " ")
'ici c'est l'adresse de la page internet que l'on veux recuperer
sURL = "le lien ici"

sFileName = "c:temple_fichier.txt" ' ici c'est l'endroit ou l'on
recupere les donnees

bRet = DownloadPage(sURL, sFileName)
If bRet Then
MsgBox "Téléchargement réussi."
Else
MsgBox "Erreur lors du téléchargement"
End If
End Sub



Michel Angelosanto, Bordeaux, France
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FS
Le #19985991
Bonjour,

Peut-être une autre approche en utilisant un objet InternetExplorer ?
Je ne peux tester en réseau mais peut-être cette fonction de Dave Miller
pourrait te donner un point de départ :

'================ Function Get_Online_Report()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.navigate "https://Your Site Name Here"
Do Until .readystate = 4
DoEvents
Loop
With .document.forms(0)
.Item("UserName").Value = "Your UserName Here"
.Item("Password").Value = "Your Password Here"
.Item("The Submit Button").Click
End With
End With
Set ie = Nothing
End Function
'================
Ou un objet QueryTables ? Un exemple ici :

http://frederic.sigonneau.free.fr/code/Excel/RequeteWeb.txt

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Michel Angelosanto a écrit :
Bonjour,

j'enregistre automatiquement des fichier avec le code suivant, or au
bureau, le fait que ça demande un login et pass pour sortir de
l'intranet, ça ne marche pas.
Y a t-il une possibilité de contrer ce problème?

Declare Function URLDownloadToFile Lib "urlmon" Alias
"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szUrl As String,
ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As
Long) As Long

Function DownloadPage(ByVal url As String, ByVal FileName As String) As
Boolean
Dim done As Boolean
Dim value As Long
On Error Resume Next
done = True
If Dir$(FileName) <> "" Then
Kill FileName
End If
value = URLDownloadToFile(0, url, FileName, 0, 0)
If Dir$(FileName) = "" Then
done = False
End If
DownloadPage = done
End Function

Private Sub enregistre_fichier()
Dim bRet As Boolean
Dim sURL As String
Dim sFileName As String, adresse As String
Dim buf As String
buf = String(1, " ")
'ici c'est l'adresse de la page internet que l'on veux recuperer
sURL = "le lien ici"

sFileName = "c:temple_fichier.txt" ' ici c'est l'endroit ou
l'on recupere les donnees

bRet = DownloadPage(sURL, sFileName)
If bRet Then
MsgBox "Téléchargement réussi."
Else
MsgBox "Erreur lors du téléchargement"
End If
End Sub



Michel Angelosanto, Bordeaux, France


FS
Le #19985971
> Peut-être une autre approche en utilisant un objet InternetExplorer ?



Bien que ta demande précise expressément "sans" :)

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

FS a écrit :
Bonjour,

Peut-être une autre approche en utilisant un objet InternetExplorer ?
Je ne peux tester en réseau mais peut-être cette fonction de Dave Miller
pourrait te donner un point de départ :

'================ > Function Get_Online_Report()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.navigate "https://Your Site Name Here"
Do Until .readystate = 4
DoEvents
Loop
With .document.forms(0)
.Item("UserName").Value = "Your UserName Here"
.Item("Password").Value = "Your Password Here"
.Item("The Submit Button").Click
End With
End With
Set ie = Nothing
End Function
'================ >
Ou un objet QueryTables ? Un exemple ici :

http://frederic.sigonneau.free.fr/code/Excel/RequeteWeb.txt

FS


Michel Angelosanto
Le #19989791
Si je ne trouve pas d'autre solution je vais faire comme cela mais
l'inconvénient, c'est qu'étant obligé de passer par plusieurs fenêtres
différentes, c'est plus long et compliqué

1) lancement de IE environ 30 secondes car chargement des infos du proxy
2) première connexion à internet
3) saisie des codes d'accès internet
4) enregistrement du fichier
5) sélection du répertoire et du nom du fichier
6) lien suivant
7) retour au 4)

Actuellement, je vais sur un site qui affiche ce que je cherche, puis je
copie/colle les données dans mon fichier.
Voila pourquoi je cherchais cette solution car c'est 100 fois plus rapide
puisqu'on n'affiche rien et on ne lance pas IE donc ça démarre
instantanément.


"FS" news:
> Peut-être une autre approche en utilisant un objet InternetExplorer ?

Bien que ta demande précise expressément "sans" :)

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

FS a écrit :
Bonjour,

Peut-être une autre approche en utilisant un objet InternetExplorer ?
Je ne peux tester en réseau mais peut-être cette fonction de Dave Miller
pourrait te donner un point de départ :

'================ >> Function Get_Online_Report()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.navigate "https://Your Site Name Here"
Do Until .readystate = 4
DoEvents
Loop
With .document.forms(0)
.Item("UserName").Value = "Your UserName Here"
.Item("Password").Value = "Your Password Here"
.Item("The Submit Button").Click
End With
End With
Set ie = Nothing
End Function
'================ >>
Ou un objet QueryTables ? Un exemple ici :

http://frederic.sigonneau.free.fr/code/Excel/RequeteWeb.txt

FS




Michel Angelosanto, Bordeaux, France
Publicité
Poster une réponse
Anonyme