help con macro per rinominare



  • help con macro per rinominare
    di silvestrob (utente non iscritto) data: 09/03/2015 12:03:05

    ho creato una piccola macro che rinomina una serie di file. inserisco il percorso del file nella colonna A e il nuovo percorso nella colonna B. il mio problema è che lanciando la macro perdo il file di origine che invece voglio tenere, mi dareste dei suggerimenti su come modificare il codice? grazie
     
    Sub Renamer_by_paolo()
    For N = 2 To Cells(Rows.Count, 1).End(xlUp).row
        If Dir(Cells(N, 1)) <> "" Then
            Name Cells(N, 1) As Cells(N, 2)
        End If
    Next N
    
    MsgBox ("FATTO")
    End Sub



  • di lepat (utente non iscritto) data: 09/03/2015 12:16:27

    invece di rinominare devi copiare i file in una nuova cartella, con lo stesso nome del file ? spiegati meglio e magari allega un file di esempio con poche righe



  • di silvestrob data: 09/03/2015 12:53:02

    devo copiare e rinominare allo stesso tempo 3000 file mantenedo gli originali. per farlo scrivo il percorso del file originale nella colonna A e il nome finale nella colonna B. lanciando la macro mi crea il nuovo file con il nome corretto ma mi cancella l'originale che io invece voglio

    COLONNA A COLONNA B
    G:PLAIT001008000000_ALPIGNANO_TO_Via Mazzini, 5_PLA_20150128.pdf G:PLA_R100117_PLA_20150128.pdf


    scusa ma non so come allegare il file



  • di Vecchio Frac data: 09/03/2015 13:37:16

    Per rinominare un file hai strade diverse:
    - Name nome_file As nuovo_percorso ome_file dove è chiaro che devi indicare un percorso diverso altrimenti il file si sovrascrive;
    - FileCopy
    - Workbook.SaveAs
    - Workbook.SaveCopyAs
    - utilizzare FileSystemObject.CopyFile

    per allegare file c'è l'apposito pulsante azzurro in cima alla discussione, in alto a destra.





  • di silvestrob data: 09/03/2015 13:50:14

    non l'avevo proprio visto...

    usando il comando name...As... mi cancella l'originale anche se il percorso è diverso. FSO non lo conosco. il mio obiettivo è comunque quello di mantenere il file originale



  • di Vecchio Frac data: 09/03/2015 14:04:11

    Con FileCopy.
     
    Option Explicit
    
    Sub Renamer_by_paolo()
    Dim n As Long
    
        For n = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            If Dir(Cells(n, 1)) <> "" Then
                FileCopy Cells(n, 1), Cells(n, 2)
            End If
        Next n
        
        MsgBox ("FATTO")
    End Sub






  • di Vecchio Frac data: 09/03/2015 14:07:30

    Con FileSystemObject.
     
    Option Explicit
    
    Sub Renamer_by_paolo()
    Dim n As Long
    
        For n = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            If Dir(Cells(n, 1)) <> "" Then
                CreateObject("Scripting.FileSystemObject").copyfile Cells(n, 1), Cells(n, 2)
            End If
        Next n
        
        MsgBox ("FATTO")
    End Sub






  • di silvestrob data: 09/03/2015 14:08:51

    Grazie mille è proprio quello che non riuscivo a fare!!!



  • di Vecchio Frac data: 09/03/2015 14:09:48

    Con Get/Put su file binario.
     
    Option Explicit
    
    Sub Renamer_by_paolo()
    Dim n As Long, s As String
    
        For n = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            If Dir(Cells(n, 1)) <> "" Then
                Open Cells(n, 1) For Binary As #1
                s = Space$(LOF(1))
                Get #1, , s
                Close
                Open Cells(n, 2) For Binary As #1
                Put #1, , s
                Close
            End If
        Next n
        
        MsgBox ("FATTO")
    End Sub






  • di Vecchio Frac data: 09/03/2015 14:10:40

    Con Name ... As invece no: hai ragione tu, il file viene spostato ma non copiato :)