help con macro per rinominare
Hai un problema con Excel? 
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_R 100117_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 :)
Vuoi Approfondire?