MACRO FTP Excel

osakar

XLDnaute Nouveau
Bonjour

Je cherche depuis un certain temps comment faire pour envoyer via FTP, un fichier généré par Macro Excel. J'ai trouvé un code sur le net car je ne suis pas expert . Cependant il manque , à mon gout, des explications relatives au code.
J'ai bidouillé un peu les différentes variables mais je n'ai aucune idée de ce qui se passe.
Ai je un moyen de le voir ? Aucune idée?
Merci pour votre aide.

T

PS 1 : J'ai les droits FTP necessaires aux commandes FTP
PS2 : Une partie du code trouvé sur le Net. :eek:

'Envoi et réception d'un fichier
Private Sub XXX

Dim HwndConnect As Long
Dim HwndOpen As Long

'Ouvre internet
HwndOpen = InternetOpen("SiteWeb", 0, vbNullString, vbNullString, 0)

'Connection au site ftp
HwndConnect = InternetConnect(HwndOpen, "<ftp>", <port>, _
"<username>", "<password>", 1, 0, 0)

'Positionnement du curseur dans le répertoire
FtpSetCurrentDirectory HwndConnect, "page_web/documents"

'Téléchargement de test.txt
FtpGetFile HwndConnect, "test.txt", "C:\WINDOWS\Bureau\test.txt", _
False, 0, &H0, 0

FtpPutFile HwndConnect, "C:\windows\bureau\test.txt", "shwin.txt", &H0, 0
'Envoi du fichier test.txt et renomme en shwin.txt un coup rend sur le serveur

InternetCloseHandle HwndConnect 'Ferme la connection
InternetCloseHandle HwndOpen 'Ferme internet

End Sub
 
C

Compte Supprimé 979

Guest
Re : MACRO FTP Excel

Bonjour Osakar et bienvenue sur le forum

STP peux tu utiliser les balises CODE lorsque tu mets du code sur ton post

Sinon des explications peut-être avec ce code
Code:
'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

A+
 

osakar

XLDnaute Nouveau
Re : MACRO FTP Excel

Merci pour ta réponse ..

Je vais décortiquer tout cela de pret.
Peut être une autre question, suis-je obliger d'inserer le code dans une seconde macro ? Ou puis je l'ajouter directement à celle qui génère le doc à balancer ?

T.

Ps : Désolé pour le code hors balises .. j'avoue ne pas savoir le faire.
:eek:
 

Discussions similaires

Réponses
2
Affichages
2 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 017
Messages
2 104 584
Membres
109 084
dernier inscrit
mizab