Mover archivos de una carpeta a otra desde Excel con macros

En base a una consulta en el Blog sobre mover archivos de cierta extensión de una carpeta a otra, es que remoto el tema de la instrucción Name, que nos sirve para renombrar archivos o moverlos de ubicación. Dicha instrucción ya la había usado en el artículo Cambiar nombre de archivos desde Excel con macros.

Cómo funciona

Supongamos que tenemos unos archivos de Excel en cierta carpeta y los queremos mover a otra. El primer paso que recomiendo hacer es crear en Excel una lista de los nombres de los archivos así como su ruta completa en la PC.

Mover archivo de carpeta desde Excel

Figura 1. Vista de los archivos en Explorador de Windows.

Para hacer una tabla con los nombres y las rutas de los archivos podemos usar opción Listar archivos que viene incluída en EXCELeINFO add-in.

Listar archivos con EXCELeINFO add-in

Figura 2. EXCELeINFO add-in nos permite tener una lista de archivos en una hoja de Excel.

Cuando tengamos nuestra lista creada con la herramienta anterior, será necesario añadir dos columnas más donde especifiquemos el nombre nuevo del archivo y su ruta completa. Aunque para este caso será el mismo nombre.

Listar archivos de una carpeta de nuestra PC

Figura 3. Las columnas azules hay que crearlas con los nuevos datos.

Para este ejemplo moveremos los archivos de la carpeta C:\Cambiar nombres a la carpeta C:\Cambiar nombres\Mover.

Para que la macro se corra de manera exitosa, seleccionamos desde la celda A2, que es donde tenemos el nombre y la ruta completa, hasta la última celda que contenga el nombre que queramos mover. Finalmente presionamos el botón Mover archivos y ver cómo los archivos quedan en el nuevo directorio.

Código vba de la macro

Sub MoverArchivos()
'
'Antes de correr la macro, elije las celdas que tengan la ruta
'del nombre actual, es decir a partir de A2
Dim NombreNuevo As String
Dim NombreAnterior As String
'
'Si no encuentra algún archivo, continuará con el siguiente
'
On Error Resume Next
For Each Celda In Selection
    NombreAnterior = Celda.Value
    'El dato del nombre nuevo y la carpeta nueva será la columna G, especificado con 6
    NombreNuevo = Celda.Offset(0, 6).Value
    Name NombreAnterior As NombreNuevo
Next Celda
'
On Error GoTo 0
'
End Sub

Referencias

Descarga EXCELeINFO add-in

Cambiar nombre de archivos desde Excel con macros

Anexos

:: Descargar el ejemplo Mover archivos de una carpeta a otra desde Excel con macros.rar

You may also like...