Bonjour, je rencontre des difficultés avec une sauvegarde de fichier sur serveur ftp pilotée par code VBA sous access : le principe utilisé est de lancer un batch qui se connecte, accède au bon répertoire sur le serveur, et dépose le fichier.
En code VBA :
C'est un peu rustique, mais la fenêtre du batch permet de voir un peu ce qui se passe (pas encore essayé les méthodes "inet" vues ici et là).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 On Error GoTo Error_Handler ' The scr file will contain the FTP commands (If it exists from previous run, delete it) sFtpFile = txtTmpDir & "\" & "copieFTP.scr" If Dir(sFtpFile) <> "" Then Kill sFtpFile sBatFile = txtTmpDir & "\" & "copieFTP.bat" If Dir(sBatFile) <> "" Then Kill sBatFile ' Open a new text file to hold the FTP script and load it with the appropriate commands. iFile = FreeFile Open sFtpFile For Output As iFile Print #iFile, "open " & getAppParam("BackupFTP") Print #iFile, getAppParam("BackupUser") Print #iFile, getAppParam("BackupPW") Print #iFile, "cd " & getAppParam("FTPBackup") Print #iFile, "binary" Print #iFile, "put " & txtZipFile Print #iFile, "bye" Close #iFile ' create a new vbs script to notify the end of the export with the appropriate commands. iFile = FreeFile sVBSFile = txtTmpDir & "\" & "MsgFinSauvegarde.vbs" If Dir(sVBSFile) <> "" Then Kill sVBSFile Open sVBSFile For Output As iFile Print #iFile, "msgbox ""Sauvegarde envoyée.""" Close #iFile ' Open a new text file to hold the bat script and load it with the appropriate commands. iFile = FreeFile Open sBatFile For Output As iFile Print #iFile, "ftp.exe -s:" & q & sFtpFile & q Print #iFile, sVBSFile Close #iFile Shell (sBatFile) 'terminé txtBackup = txtBackup & "Fichier zip envoyé au serveur. " Exit Function
Le comportement est un peu surprenant :
- chez moi, aucun souci.
- au bureau de l'association qui gère ses membres sous access, le processus ne se déroule pas correctement : connexion au serveur, identifiant, mot de passe : ok... passage au répertoire : ok. écriture fichier zippé ("put " & txtZipFile) : could not open port 5xx xxx. Au final : le fichier est bien créé sur le serveur, avec une taille égale à 0ko.
La neufbox de l'association a récemment lâché. J'ai pensé à un problème de configuration de la nouvelle (mais à domicile, je n'ai rien configuré de spécial sur ma freebox...). Essayé d'ouvrir le port récalcitrant en configurant la box. La fois suivante, c'est un autre 5xx yyy qu'il essaie d'ouvrir. Bon...
Sous Firefox, utilisé FireFTP. Je m'attendais à voir un message d'erreur... et le fichier a été transféré comme une fleur. Pas d'indication de souci, pas de nouvelle piste.
Je suis égaré : problème de code et de sensibilité de configuration PC ? (mais ça marchait avant le changement de box). Pb de box ? (mais pourquoi un transfert sous FireFTP fonctionne-t-il, et pas celui lancé par le code VBA ?). Très certainement, ce problème prend surtout sa source dans l'ignorance du rédacteur de cette question. Une aide serait-elle possible ? Merci.
Partager