Ciao
ho ripreso questa problematica...
Sono andata sul sito di Bettarelli ed ho copiato la sua routine.
La provo dalla mia macro excel e non da' nessun errore, ma non fa quello che dovrebbe fare.
Anche in debug, ho visto che le variabili sono valorizzate correttamente, il file c'è, le varie directory sono presenti....
C'è un modo (formula, comando o qualsiasi altra cosa da inserire nella routine) per verificare che effettivamente si sia collegato al mio FTP?
Altra domanda, siccome in fondo alla routine (subito dopo la copy del file) ci sono questi comandi
Set Item = Nothing
Set objShellLocal = Nothing
Set objFolderLocal = Nothing
Set objShellFTP = Nothing
Set objFolderFTP = Nothing
Set objShellDown = Nothing
Set objFolderDown = Nothing
non dovrebbe esserci un timer che aspetta che il trasfert sia finito prima di "annullare" i vari parametri?
Se ho detto una cavolata, preferisco le uova sode ai pomodori marci...
la routine scopiazzata è questa:
Public Sub FTPFile(strFTP, strUsername, strPassword, dirLocal, file, _ dirFtp As Variant, n As Integer) Dim objShellLocal, objShellFTP, objFolderLocal, objFolderFTPDim objShellDown, objFolderDownDim strPathFTP, strPathDown, strPathLocalstrPathLocal = dirLocalstrPathFTP = strFTP & "/" & strUsername & ":" & strPassword & "@" & strFTP & "/" & dirFtp & "/"Set objShellLocal = CreateObject("Shell.Application")Set objFolderLocal = objShellLocal.Namespace(strPathLocal)Set objShellFTP = CreateObject("Shell.Application")Set objFolderFTP = objShellFTP.Namespace(strPathFTP)Set objShellDown = CreateObject("Shell.Application")Set objFolderDown = objShellDown.Namespace(strPathLocal) Dim Item As ObjectIf n = 1 Then'--- Trasferisce da cartella locale a FTP If Len(file) = 0 Then For Each Item In objFolderLocal.Items objFolderFTP.CopyHere strPathLocal & Item.Name 'per spostare il file sostituire la riga sopra con questa objFolderFTP.MoveHere strPathLocal & Item.Name Next Else '--- viene trasferito solo un file objFolderFTP.CopyHere strPathLocal & file End IfElse'--- Trasferisce da FTP a diversa cartella locale If file = 0 Then For Each Item In objFolderFTP.Items objFolderDown.CopyHere strPathFTP & Item.Name 'per spostare il file sostituire la riga sopra con questa objFolderFTP.MoveHere strPathLocal & Item.Name Next Else '--- viene trasferito solo un file objFolderDown.CopyHere strPathFTP & file End IfEnd If Set Item = NothingSet objShellLocal = NothingSet objFolderLocal = NothingSet objShellFTP = NothingSet objFolderFTP = NothingSet objShellDown = NothingSet objFolderDown = Nothing End Sub