Copiar archivo VBA: 5 ejemplos para copiar y pegar

Índice
  1. Copiar un archivo VBA
    1. Ejemplo 1: copiar un archivo
    2. Ejemplo 2: copiar un archivo usando variables
    3. Ejemplo 3: copiar un archivo según los valores de celda
    4. Ejemplo 4: verificar la existencia del archivo antes de copiar VBA
    5. Ejemplo 5: evitar errores al copiar archivos
  2. Posibles errores
  3. Notas sobre la copia de archivos

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.

Copiar archivo de VBA usando valores de celda

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 .

Error de cambio de nombre de archivo de VBA

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

Copiar a un archivo que ya está abierto

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

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...