Renombrar archivos con macros
Resuelto
catlea
Mensajes publicados
1
Estado
Miembro
-
Binzen -
Binzen -
Hola,
Tengo que renombrar una gran cantidad de archivos. Poseo el antiguo nombre y el nuevo nombre en una hoja de Excel. Debe haber una forma de renombrar estos archivos automáticamente a partir de los datos de Excel.
He encontrado el siguiente código VBA en uno de los foros porque me parece adecuado para mi caso.
Sub Ed()
Dim Chemin As String, Fichier As String, Ligne As Integer
Dim AncienNom As String, NouveauNom As String
Chemin = "C:\Dossier1\Dossier2\DossierX\"
For Ligne = 2 To 402
AncienNom = Range("A" & Ligne).Value
NouveauNom = Range("B" & Ligne).Value
Fichier = Dir(Chemin & AncienNom)
If Fichier = Empty Then
MsgBox "le fichier " & AncienNom & " n'a pas été trouvé"
Else
Name Fichier As NouveauNom
End If
Next Ligne
End Sub
Évidemment, j'ai personnalisé ce qu'il y avait à personnaliser: chemin où se trouvent les fichiers, lignes du fichier excel à prendre en compte, colonnes où se trouvent los nombres antiguos y nuevos.
Pourtant, cela ne fonctionne pas et je ne comprends pas pourquoi. Je précise que mes fichiers ont des extensions différentes.
Merci de votre aide.
Configuration: Windows XP / Internet Explorer 7.0
Tengo que renombrar una gran cantidad de archivos. Poseo el antiguo nombre y el nuevo nombre en una hoja de Excel. Debe haber una forma de renombrar estos archivos automáticamente a partir de los datos de Excel.
He encontrado el siguiente código VBA en uno de los foros porque me parece adecuado para mi caso.
Sub Ed()
Dim Chemin As String, Fichier As String, Ligne As Integer
Dim AncienNom As String, NouveauNom As String
Chemin = "C:\Dossier1\Dossier2\DossierX\"
For Ligne = 2 To 402
AncienNom = Range("A" & Ligne).Value
NouveauNom = Range("B" & Ligne).Value
Fichier = Dir(Chemin & AncienNom)
If Fichier = Empty Then
MsgBox "le fichier " & AncienNom & " n'a pas été trouvé"
Else
Name Fichier As NouveauNom
End If
Next Ligne
End Sub
Évidemment, j'ai personnalisé ce qu'il y avait à personnaliser: chemin où se trouvent les fichiers, lignes du fichier excel à prendre en compte, colonnes où se trouvent los nombres antiguos y nuevos.
Pourtant, cela ne fonctionne pas et je ne comprends pas pourquoi. Je précise que mes fichiers ont des extensions différentes.
Merci de votre aide.
Configuration: Windows XP / Internet Explorer 7.0
5 respuestas
Hola
He intentado usar este macro pero confieso que, al no entender mucho, me cuesta. En una hoja de Excel tengo una columna con el antiguo nombre y otra con el nuevo nombre. He adaptado la macro de la siguiente forma:
Sub Ed()
Dim Chemin As String, Fichier As Variant, Ligne As Integer
Dim AncienNom As String, nouveaunom As String
Dim Source As String, Destination As String
Dim objFSO As Object
Dim CheminCourt As String
Chemin = "C:\Dossier1"
CheminCourt = "C:\Dossier1"
ChDrive "C"
ChDir CheminCourt
Set objFSO = CreateObject("Scripting.FileSystemObject")
With Sheets("Feuil1")
'For Ligne = 2 To 402
For Ligne = 2 To 62
AncienNom = .Range("A" & Ligne).Value
nouveaunom = .Range("B" & Ligne).Value
Fichier = Dir(Chemin & AncienNom, 6)
If Fichier = Empty Then
MsgBox "le fichier " & AncienNom & " n'a pas été trouvé"
Else
Source = Chemin & Fichier: Destination = Chemin & nouveaunom
objFSO.CopyFile Source, Destination
Kill (Chemin & AncienNom)
End If
Next Ligne
End With
Set objFSO = Nothing
End Sub
El macro me devuelve “el archivo antiguo no ha sido encontrado”. Mis archivos están en c:\Dossier1
Gracias por vuestra ayuda
Phil
He intentado usar este macro pero confieso que, al no entender mucho, me cuesta. En una hoja de Excel tengo una columna con el antiguo nombre y otra con el nuevo nombre. He adaptado la macro de la siguiente forma:
Sub Ed()
Dim Chemin As String, Fichier As Variant, Ligne As Integer
Dim AncienNom As String, nouveaunom As String
Dim Source As String, Destination As String
Dim objFSO As Object
Dim CheminCourt As String
Chemin = "C:\Dossier1"
CheminCourt = "C:\Dossier1"
ChDrive "C"
ChDir CheminCourt
Set objFSO = CreateObject("Scripting.FileSystemObject")
With Sheets("Feuil1")
'For Ligne = 2 To 402
For Ligne = 2 To 62
AncienNom = .Range("A" & Ligne).Value
nouveaunom = .Range("B" & Ligne).Value
Fichier = Dir(Chemin & AncienNom, 6)
If Fichier = Empty Then
MsgBox "le fichier " & AncienNom & " n'a pas été trouvé"
Else
Source = Chemin & Fichier: Destination = Chemin & nouveaunom
objFSO.CopyFile Source, Destination
Kill (Chemin & AncienNom)
End If
Next Ligne
End With
Set objFSO = Nothing
End Sub
El macro me devuelve “el archivo antiguo no ha sido encontrado”. Mis archivos están en c:\Dossier1
Gracias por vuestra ayuda
Phil
he marcado "no seguir"