Código VBA para copiar, mover, eliminar y administrar archivos

Índice
  1. Comprobar si existe un archivo
  2. Cambiar el nombre de un archivo
  3. Mover un archivo
  4. Copiando un archivo
  5. Borrar archivos
  6. Obtener atributos de archivo

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

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...