copiare file su un server

Anonimo
2013-06-11T10:31:23+00:00

Rieccomi!

Questa è un po' meno semplice...

per completare il mio automatismo su excel, dovrei spostare i file prodotti da un server ad un'altro server ftp al quale accedo con utenza e password.

Ho trovato tra le vostre SEMPRE UTILI discussioni questo routine fatta da DAVID


Private Sub ComandoCopia_Click()

    MsgBox "Stai Per Copiare L'archivio sul Server!!!"

    Dim objShell As Object

    Dim objFolder As Object

    Const FOF_CREATEPROGRESSDLG = &H10&

    Set objShell = CreateObject("Shell.Application")

    'Quella che segue è la cartella DESTINAZIONE

    Set objFolder = objShell.NameSpace _

        ("C:\Pippo")

    If Not objFolder Is Nothing Then

        objFolder.CopyHere _

            "C:\Documents and Settings\Administrator\Documenti", _

            FOF_CREATEPROGRESSDLG

    End If

    Set objFolder = Nothing

    Set objShell = Nothing

End Sub


Volevo sapere se:

  1. E' ancora valida
  2. E' applicabile ad una procedura attivata da una macro su excel
  3. E' possibile aggiungerci l'utenza e la password FTP

sempre devota

Lucia

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-08-01T08:51:31+00:00

Buondì

scusate per il ritardo ma ho dovuto aspettare i controlli dei sistemisti...

Alla fine ho usato la routine di Andrea che copia i file correttamente....

... per tutti i clienti, TRANNE uno!!!!

Per questa pecorella nera, devo copiare i file su un server per il quale i sistemisti hanno detto "sul server ..... non è presente nessun servizio ftp, quindi non puoi utilizzare tale protocollo. Fai una copia via share di rete".

Allora volevo capire, cosa cambia nel comando. Quando accedo da risorse del computer, sulla barra degli indirizzi digito "\11.111.11.111" poi mi chiede utenza e password (solo la prima volta che mi collego, poi non me la chiede più) e da lì navigo nelle cartelle.

Il comando che io ho messo è il seguente:

"user:password@\indirizzo_ip\directory\nome file"

ma non funziona.

E poi come risolvo il problema dell'utenza e password che mi viene chiesta solo una volta?

Grazie

Ciao Lucia,

non so se ho capito bene, prova così:

ActiveWorkbook.SaveAs "\ServerXYZ\directory" & sFilename, Password:="password"

Andrea.

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-07-31T07:08:38+00:00

...

Ciao Lucia,

perché non tentare così?

Andrea.


Sub ftpSave()

Dim sFilename As String

sFilename = "QuestoFile.xlsm"

ActiveWorkbook.SaveAs "ftp://username:******@ftpserver.domain.com/directory/" & sFilename

MsgBox ("Done.")

End Sub


La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-06-11T11:46:01+00:00

Ciao Lucia,

ragioni di tempo di impediscono di essere esaustivo come vorrei.

Per brevità diciamo che:

  1. si è ancora valida
  2. E' stata sviluppata per Access ma è senz'altro applicabile ad una macro di Excel.
  3. per utilizzarla ai fini di un'upload su server FTP necessita ovviamente di essere un po' modificata. Dai un'occhiata a questo articolo su di Leonardo Bettarelli su Riolab: Accedere ai file via FTP

David

La risposta è stata utile?

0 commenti Nessun commento

19 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-07-29T13:29:48+00:00

    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
    

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-06-11T11:25:19+00:00

    ...


    Volevo sapere se:

    1. E' ancora valida
    2. E' applicabile ad una procedura attivata da una macro su excel
    3. E' possibile aggiungerci l'utenza e la password FTP

    sempre devota

    Lucia

    Ciao Lucia,

    non penso che la possa utilizzare per i tuoi scopi, devi crearti uno script (leggi file txt) che contiene i comandi ftp per compiere l'operazione e quindi eseguirlo tramite shell.

    Ciao,

    Andrea.

    La risposta è stata utile?

    0 commenti Nessun commento