Código VBA para copiar, mover, eliminar y administrar archivos
Automatizar procesos con VBA puede implicar copiar, mover, eliminar y administrar muchos archivos. Afortunadamente, VBA tiene muchas funciones integradas para realizar estas tareas por nosotros. Estos archivos no necesariamente tienen que ser libros de Excel; pueden ser cualquier tipo de archivo.
Tabla de contenido
- Comprobar si existe un archivo
- Cambiar el nombre de un archivo
- Mover un archivo
- Copiando un archivo
- Borrar archivos
- Obtener atributos de archivo
Descargue el archivo de ejemplo: únase al programa Insiders gratuito y obtenga acceso al archivo de ejemplo utilizado para esta publicación.
Nombre del archivo: 0041 VBA copiar, mover, eliminar y administrar archivos.zip
Tener acceso
Comprobar si existe un archivo
Si se realiza alguna acción en un archivo que no existe, el código VBA generará un error. Como resultado, comprobar la existencia de un archivo puede ser una de las acciones más comunes que realizamos.
El siguiente código mostrará Verdadero o Falso en un cuadro de mensaje para indicar si el archivo existe.
Sub CheckIfFileExists()'Comprueba si existe un archivoMsgBox Dir("C:UsersmarksDocumentsFolderText.xlsx") ""End Sub
El siguiente código utiliza una declaración If para llevar a cabo diferentes acciones dependiendo de si el archivo existe o no.
Sub PerformActionIfFileExists()Dim filePath As StringfilePath = "C:UsersmarksDocumentsFolderFileName.xlsx"If Dir(filePath) "" Luego 'Insertar acción si el archivo existe' Este ejemplo muestra un cuadro de mensaje MsgBox filePath "existe."Else 'Insertar acciones si el archivo no existe 'Este ejemplo muestra un cuadro de mensaje MsgBox filePath "no existe."End IfEnd Sub
Al comprobar periódicamente la existencia de archivos, puede resultar más fácil tener una función reutilizable dentro de un Módulo a la que se pueda recurrir cuando sea necesario.
'Función reutilizable para comprobar si existe un archivoFunction DoesFileExist(filePath) As BooleanDoesFileExist = Dir(filePath) ""End Function
El siguiente código muestra cómo llamar a la función reutilizable como parte de una declaración If.
Sub UseTheFunction()Dim myFile As StringmyFile = "C:UsersmarksDocumentsFolderFileName.xlsx"'Llame a la función reutilizable para comprobar la existencia del archivo. Si DoesFileExist(myFile) = True Then 'Insertar acción si el archivo existe' Este ejemplo muestra un cuadro de mensaje MsgBox " El archivo existe."End IfEnd Sub
Cambiar el nombre de un archivo
El siguiente código cambia el nombre de un archivo.
Sub RenameAFile()'Cambiar el nombre de un archivo "C:UsersmarksDocumentsFolderCurrentFileName.xlsx" _ As "C:UsersmarksDocumentsFolderNewFileName.xlsx"End Sub
Si el nombre del archivo de destino ya es un archivo existente, el código generará un error. Por lo tanto, es una buena práctica comprobar si los nombres de los archivos de origen y de destino ya están en uso.
Consulte esta publicación para ver más ejemplos del uso de VBA para cambiar el nombre de archivos .
Mover un archivo
El código para mover un archivo tiene la misma sintaxis que el código para cambiar el nombre de un archivo.
Sub MoveAFile()'Mover un nombre de archivo "C:UsersmarksDocumentsFileName.xlsx" como _ "C:UsersmarksDocumentsNew FolderFileName.xlsx"End Sub
Copiando un archivo
Al copiar un archivo se conserva el archivo existente, pero se crea una versión duplicada del mismo en una nueva ubicación.
Sub CopyAFile()'Copiar un archivoFileCopy "C:UsersmarksDocumentsFolderOriginal File.xlsx", _ "C:UsersmarksDocumentsNew FolderCopied File.xlsx"End Sub
Si el nombre del archivo de destino ya es un archivo existente, el código generará un error. Por lo tanto, es una buena práctica comprobar si los nombres de los archivos de origen y de destino ya están en uso.
Borrar archivos
Eliminar archivos los elimina por completo. Los archivos eliminados con VBA no se envían a la papelera de reciclaje y, como no existe la función de deshacer, puede ser bastante peligroso. Tenga especial cuidado para asegurarse de que el código haga lo que usted espera.
El siguiente código elimina un archivo específico.
Sub DeleteSpecificFile()'Eliminar un archivo específicoKill "C:UsersmarksDocumentsFolderDeleteMe.xlsx"End Sub
El siguiente código elimina archivos usando un comodín. En esta circunstancia, elimina todos los archivos con una extensión de archivo .xlsx.
Sub DeleteFilesWithWildcards()'Eliminar todos los archivos .xlsx usando el carácter comodín *Kill "C:UsersmarksDocumentsFolder*.xlsx"End Sub
El siguiente ejemplo elimina todos los archivos de una carpeta utilizando caracteres comodín.
Sub DeleteAllFilesInFolder()'Elimina todos los archivos de una carpeta usando dos caracteres comodín *Kill "C:UsersmarksDocumentsFolder*.*"End Sub
Los caracteres comodín comunes son:
Personaje | Descripción |
* (asterisco) | Cualquier número de caracteres |
? (signo de interrogación) | Cualquier personaje individual |
El siguiente ejemplo aplica el * (asterisco) y ? (signo de interrogación) caracteres comodín
'Eliminar todos los archivos .xlsx o .xlsm de una carpeta, pero no los archivos .xls' como ? El comodín debe tener al menos un carácter de longitud. ¿Eliminar "C:UsersmarksDocumentsFolder*.xls?"
Obtener atributos de archivo
Cada archivo tiene atributos específicos, por ejemplo, pueden ser archivos de solo lectura, ocultos o de sistema, etc.
El siguiente código comprueba si un archivo es de solo lectura.
Sub GetFileAttributes()Dim myFile As StringmyFile = "C:UsersmarksDocumentsFolderReadOnlyFile.xlsx"'Si el archivo es de solo lectura, muestra el cuadro de mensajeIf (GetAttr(myFile) And vbReadOnly) 0 Then MsgBox "El archivo es de solo lectura"End IfEnd Sub
Para comprobar otros atributos, reemplace vbReadOnly en el código anterior con la configuración requerida.
VBA Nombre del atributo | Enumerador | Descripción |
normal | 0 | Archivos sin atributos (configuración predeterminada) |
vbSolo lectura | 1 | Archivos de solo lectura |
vbOculto | 2 | Archivos ocultos |
vbSistema | 4 | Archivos del sistema |
vbVolumen | 8 | etiqueta de volumen |
vbDirectorio | dieciséis | Directorios |
Deja una respuesta