Copiar archivo VBA: 5 ejemplos para copiar y pegar
Visual Basic nos da acceso a partes del entorno de Windows; por lo tanto, hay muchas actividades basadas en archivos que podemos realizar con VBA. Uno de ellos es utilizar VBA para copiar un archivo.
En esta publicación, analizamos 5 ejemplos de cómo lograrlo.
Tabla de contenido
- Copiar un archivo VBA
- Ejemplo 1: copiar un archivo
- Ejemplo 2: copiar un archivo usando variables
- Ejemplo 3: copiar un archivo según los valores de celda
- Ejemplo 4: verificar la existencia del archivo antes de copiar VBA
- Ejemplo 5: evitar errores al copiar archivos
- Posibles errores
- Notas sobre la copia de archivos
Copiar un archivo VBA
En esta publicación, utilizamos el método FileCopy básico. Para opciones más avanzadas, podemos usar las Opciones de sistemas de archivos.
Ejemplo 1: copiar un archivo
El siguiente ejemplo copia el archivo de ejemplo.xlsx de C:UsersmarksDocuments a C:UsersmarksDocumentsTest .
Sub VBACopyFile()FileCopy "C:UsersmarksDocumentsExample File.xlsx", _ "C:UsersmarksDocumentsTestExample File.xlsx"End Sub
Nota: En este ejemplo, el nombre del archivo no se modifica.
Ejemplo 2: copiar un archivo usando variables
En el Ejemplo 1, los nombres de los archivos se incluyeron dentro de la declaración FileCopy. Sin embargo, también se pueden proporcionar como variables.
En el siguiente código:
- Las variables son declaradas (es decir, creadas)
- Se asignan valores a las variables.
- Las variables se utilizan en la declaración FileCopy.
Sub VBACopyFileVariables()'Declarar variablesDim copyFromFile As StringDim copyToFile As String'Asignar valores a las variablescopyFromFile = "C:UsersmarksDocumentsExample File.xlsx"copyToFile = "C:UsersmarksDocumentsExample File Copied.xlsx"'Usar variables en FileCopy StatementFileCopy copyFromFile, copyToFileEnd Sub
Nota: En este ejemplo, el archivo no se copia a una nueva ubicación, sino que se le cambia el nombre de Archivo de ejemplo.xlsx a Archivo de ejemplo copiado.xlsx.
Ejemplo 3: copiar un archivo según los valores de celda
En este ejemplo, copiamos un archivo utilizando rutas de archivo contenidas en los valores de celda.
Mire la captura de pantalla a continuación. La celda C2 contiene la ruta del archivo actual y la celda C4 contiene la ruta a la que se copiará el archivo.
Podemos ejecutar la siguiente macro para cambiar el nombre de un archivo usando estos valores de celda.
Sub VBACopyFileSheetNames()FileCopy ActiveSheet.Range("C2"), _ ActiveSheet.Range("C4")End Sub
Nota: En este ejemplo, el archivo se copia a una nueva carpeta y también se le cambia el nombre de Archivo de ejemplo.xlsx a Archivo de ejemplo copiado.xlsx.
Ejemplo 4: verificar la existencia del archivo antes de copiar VBA
El comando FileCopy felizmente sobrescribirá un archivo sin mostrar ningún error. Por lo tanto, es una buena idea comprobar si un archivo ya existe antes de copiarlo.
El siguiente código comprueba la existencia de un archivo en la ubicación de destino. Si existe un archivo, aparece un cuadro de mensaje con opciones Sí/No. Al hacer clic en No, existe la macro.
Sub VBACheckTargetFileCopyFile()'Declarar variablesDim copyFromFile As StringDim copyToFile As StringDim msgBoxAnswer As Long'Asignar variables a nombres de archivos copyFromFile = "C:UsersmarksDocumentsExample File.xlsx"copyToFile = "C:UsersmarksDocumentsTestExample File Copied.xlsx"'Compruebe si el archivo ya existeIf Dir (copyToFile) "" Luego 'Mostrar el cuadro de mensaje y capturar la respuesta msgBoxAnswer = MsgBox(Prompt:="El archivo ya existe en esa ubicación." _ vbNewLine "¿Desea sobrescribirlo?", Botones:=vbYesNo, _ Título:= "Copiando archivo") 'Si la respuesta es No, existe la macro. Si msgBoxAnswer = vbNo Entonces 'Salir de la macro Salir Sub End IfEnd Si'El archivo no existe o se hace clic en Sí para continuarFileCopy copyFromFile, copyToFileEnd Sub
Ejemplo 5: evitar errores al copiar archivos
Copiar archivos puede provocar errores; Los errores se describen en la sección siguiente. El siguiente código se basa en el Ejemplo 4 y también proporciona un cuadro de mensaje de error si se produce algún error.
Sub VBAAdvancedCopyFile()'Declarar variablesDim copyFromFile As StringDim copyToFile As StringDim msgBoxAnswer As Long'Asignar variables a nombres de archivos copyFromFile = "C:UsersmarksDocumentsExample File.xlsx"copyToFile = "C:UsersmarksDocumentsTestExample File Copied.xlsx"En caso de error Reanudar Siguiente'Compruebe si el el archivo ya existeSi Dir(copyToFile) "" Luego 'Mostrar el cuadro de mensaje y capturar la respuesta msgBoxAnswer = MsgBox(Prompt:="El archivo ya existe en esa ubicación." _ vbNewLine "¿Desea sobrescribirlo?", Botones:=vbYesNo, _ Título:="Copiando archivo") 'Si la respuesta es No, existe la macro. Si msgBoxAnswer = vbNo Entonces 'Salir de la macro Salir Sub End IfEnd Si'El archivo no existe o se hace clic en Sí para continuarFileCopy copyFromFile, copyToFile'Mostrar mensaje si se produjo un error Si Err.Number 0 Entonces Mensaje de MsgBox:="No se puede copiar el archivo", Botones:=vbOK, _ Título:="Error al copiar el archivo"Finalizar si'Activar nuevamente la verificación de erroresEn Error Ir a 0End Sub
Posibles errores
Copiar un archivo durante la automatización puede provocar errores. A continuación se muestran algunos de los errores comunes del proceso de copia de archivos de VBA.
Copiar un archivo que no existe genera un error: Error de tiempo de ejecución '53': Archivo no encontrado .
Copiar un archivo en una ubicación de archivo que está bloqueada (es decir, otro usuario tiene el archivo abierto) genera un error: Error de tiempo de ejecución '70': Permiso denegado
Notas sobre la copia de archivos
Para finalizar esta publicación, solo hay algunas cosas que debes tener en cuenta:
- Hemos utilizado libros de Excel en los ejemplos, pero podemos utilizar cualquier tipo de archivo.
- FileCopy no puede copiar carpetas completas, solo archivos.
- El comando FileCopy es el código central de Visual Basic. Este código lo encontramos en otras aplicaciones de Windows como Word y PowerPoint .
- Consulte esta publicación para obtener más códigos de ejemplo para administrar archivos y carpetas: Código VBA para copiar, mover, eliminar y administrar archivos .
Además, consulte la biblioteca de códigos VBA para obtener cientos de fragmentos de código reutilizables.
Deja una respuesta