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.
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.
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.
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
Cambiar nombre de archivos desde Excel con macros
Anexos
:: Descargar el ejemplo Mover archivos de una carpeta a otra desde Excel con macros.rar