Problème sauvegarde ftp commandée par code VBA
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 :
Code:
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 |
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à).
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.