Copiar, mover, eliminar y renombrar archivos y carpetas desde Excel con VBA y macros
Cuando trabajas con macros en Excel, en algún momento de tu vida será necesario administrar archivos desde tus propias macros y para eso será necesario que tengas a la mano las instrucciones necesarias para realizar acciones sobre esos archivos tales como copiar, mover, renombrar e incluso eliminar.
En este tutorial y video te muestro las instrucciones necesarias para realizar las acciones que ya mencioné. Es importante recalcar que dichas acciones las puedes enriquecer si las combinas con formularios y haces volar tu imaginación.
En el complemento EXCELeINFO add-in ya cuento con algunas herramientas que nos van a ahorrar tiempo en el manejo de archivos en Excel.
Primero conoce la propiedad Path
La propiedad Path nos ayudará a conocer la ruta completa de un archivo. Para nuestros ejemplos aplicamos esta propiedad al archivo activo o ThisWorkbook. La siguiente macro nos mostrará un mensaje con la ruta completa donde se encuentra alojado nuestro archivo actual, además de recorrer todos los archivos abiertos y mostrar el nombre y la ruta completa de cada uno de ellos.
Option Explicit ' 'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo Sub MostrarRuta() Dim Archivo As Object MsgBox ThisWorkbook.Path For Each Archivo In Application.Workbooks MsgBox Archivo.Name & vbNewLine & vbNewLine & Archivo.Path Next Archivo End Sub
Figura 1. Con la propiedad Path mostramos la ruta completa de un archivo.
Ver Video Copiar, mover, eliminar, renombrar archivos y carpetas desde Excel
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Crear directorio o carpeta
Si hablamos de administrar archivos no podemos dejar de lado una instrucción que nos ayudará a crear carpetas, ya que es el lugar donde vamos a almacenar nuestros archivos. La siguiente macro nos permite crear un directorio llamado carpeta en la misma ruta donde se encuentra el archivo activo. Haremos uso de la instrucción MkDir o Make Directory por sus siglas en inglés.
Sub CrearDirectorio() Dim Ruta As String Ruta = ThisWorkbook.Path MsgBox Ruta MkDir Ruta & "\carpeta" End Sub
Copiar archivos
Para copiar archivos con VBA haremos uso de la instrucción FileCopy o Copiar archivo por su nombre en inglés. Ésta propiedad nos pedirá primero la ruta y el nombre de origen y la ruta y el nombre de destino. Cabe aclarar que al momento de pegar el archivo en la ruta destino, tenemos la posibilidad de se copie con un nuevo nombre.
Nota: Es importante que especifiques la extensión de los archivos, ya que no es lo mismo Archivo que Archivo.txt.
Sub CopiarArchivos() Dim Ruta As String Ruta = ThisWorkbook.Path 'FileCopy "C:\Users\usuario\Documents\texto.txt", "C:\Users\usuario\Documents\carpeta\texto.txt" FileCopy Ruta & "\texto.txt", Ruta & "\carpeta\texto2.txt" End Sub
Eliminar archivos
La instrucción Kill para eliminar archivos es muy importante que la uses con mucho cuidado, ya que si eliminas un archivo usando esta instrucción no será posible recuperar el archivo, ya que no se va a la Papelera de reciclaje
En la siguiente macro, además de usar Kill para eliminar el archivo, previamente enviaremos un mensaje de confirmación donde el usuario decidirá si desea continuar con la eliminación del archivo.
Sub EliminarArchivo() Dim Ruta As String Dim Confirmar As Boolean Ruta = ThisWorkbook.Path Confirmar = MsgBox("Está seguro de eliminar el archivo? " & ThisWorkbook.Name, vbYesNo + vbQuestion, "EXCELeINFO") If Confirmar = vbYes Then Kill Ruta & "\texto.txt" Else End If End Sub
Figura 2. Es importante tener mucho cuidado al usar la instrucción Kill en Excel VBA.
En EXCELeINFO add-in contamos con la herramienta Cerrar y eliminar archivo activo, la cual nos ahorra el trabajo de cerrar el archivo activo manualmente y tener que ir a la carpeta y borrarlo.
Renombrar archivos
Tanto para renombrar archivos como para mover archivos haremos uso de la instrucción Name. Esta instrucción nos pedirá inicialmente la ruta y el nombre actual y la ruta el nombre nuevo. También hay que indicar que esta misma instrucción la podemos utilizar para renombrar directorios.
Sub RenombrarArchivos() 'Renombrar archivo Name "C:\Users\usuario\Documents\carpeta\texto.txt" As "C:\Users\usuario\Documents\carpeta\textonuevo.txt" 'Renombrar carpeta Name "C:\Users\usuario\Documents\carpeta" As "C:\Users\usuario\Documents\carpetanueva" End Sub
En EXCELeINFO add-in contamos con la herramienta Renombrar archivo activo que nos permite cambiarle al nombre al archivo que tenemos abierto sin necesidad de cerrarlo.
Mover archivos de carpeta
Por último veremos cómo mover archivos de una carpeta a otra usando también la instrucción Name. Pero lo haremos más interesante, haremos uso de la función Dir que nos permitirá definir un filtro de archivos y el filtro que usaremos será que nos permite mover sólo los archivos de Texto, es decir con extensión .TXT. También usaremos un Bucle Do Until para recorrer todos los archivos de Texto y termine el ciclo cuando ya no haya archivo qué mover.
Sub MoverArchivos() Dim MiArchivo As String MiArchivo = Dir("C:\Users\usuario\Documents\*.txt") If MiArchivo = "" Then MsgBox "No hay archivos a mover.", vbExclamation, "EXCELeINFO" Else Do Until MiArchivo = "" Name "C:\Users\usuario\Documents\" & MiArchivo As "C:\Users\usuario\Documents\carpetanueva\" & MiArchivo MiArchivo = Dir Loop End If End Sub
En EXCELeINFO add-in contamos con la herramienta Mover archivo de carpeta que nos permitirá mover el archivo activo a otra carpeta sin necesidad en un solo paso.
Descarga el archivo de ejemplo
Copiar, mover, eliminar, renombrar archivos y carpetas desde Excel – EXCELeINFO.zip
Si te gustó este tutorial por favor anótate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.