'Déclaration des API Windows pour permettre la récupération du fichier sur le serveur FTP
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" _
(ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, _
ByVal sUserName As String, ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _
(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias _
"FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
ByVal lpszDirectory As String) As Boolean
Private Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" _
(ByVal hConnect As Long, ByVal lpszRemoteFile As String, _
ByVal lpszNewFile As String, ByVal fFailIfExists As Long, _
ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, _
ByRef dwContext As Long) As Boolean
Public Sub ImportFTP()
On Error GoTo Err_Sub
' Marco développé par : Shwin - [URL="http://www.developpez.net/forums/member.php?u=26564"]Forum des professionnels en informatique - Voir le profil: shwin[/URL]
' Source : [URL="http://access.developpez.com/sources/?page=Fichiers#EnvoiFTP"]Access - Les Sources - Club des décideurs et professionnels en Informatique[/URL]
Dim HwndConnect As Long, HwndOpen As Long
' On récupère l'adresse IP du serveur FTP
Dim SiteFTP
SiteFTP = "X.X.X.X"
' Lance l'ouverture du site ftp du dossier travail
HwndOpen = InternetOpen("ftp://" & SiteFTP & "/travail", 0, vbNullString, vbNullString, 0)
'Connection au site ftp
HwndConnect = InternetConnect(HwndOpen, SiteFTP, 21, Login, Mdp, 1, 0, 0)
'positionnement du curseur dans le répertoire travail
FtpSetCurrentDirectory HwndConnect, "/travail"
'Téléchargement du fichier
Dim Rep
Rep = FtpGetFile(HwndConnect, MonFic, VPathFileName, False, 0, &H0, 0)
' Vérifier que le fichier a bien été téléchargé
If Rep = False Then
InternetCloseHandle HwndConnect 'Ferme la connection
InternetCloseHandle HwndOpen 'Ferme internet
MsgBox "Impossible d'importer le fichier : " & FicELODIE & vbCrLf _
& "Arrêt de la macro !"
End
End If
' Ferme le handle de connection puis celui d'Internet
InternetCloseHandle HwndConnect
InternetCloseHandle HwndOpen
Exit Sub
Err_Sub:
MsgBox "Une erreur c'est produite, arrêt de la macro"
InternetCloseHandle HwndConnect 'Ferme la connection
InternetCloseHandle HwndOpen 'Ferme internet
FlgErr = True
End
End Sub