VBA – Copiar Archivo / Libro de Trabajo

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on marzo 14, 2022

Este tutorial demostrará cómo copiar un archivo usando VBA.

VBA le permite copiar un archivo, utilizando la función FileSystemObject.

Si quieres aprender a renombrar un archivo, puedes hacer clic en este enlace: VBA Renombrar Archivo

Copiar un archivo / libro de trabajo

Vamos a mostrar cómo copiar el archivo existente Archivo de muestra 1.xlsx en la carpeta VBA Folder. En este ejemplo, no cambiaremos el nombre del archivo, sólo lo copiaremos y sobrescribiremos. La carpeta actualmente tiene sólo este archivo:

Explorador archivos windows

Imagen 1. Archivo en la carpeta C:\Carpeta VBA

Aquí está el código:

Dim oFSO As Object
 
Set oFSO = CreateObject("Scripting.FileSystemObject")
     
Call oFSO.CopyFile("C:\Carpeta VBA\Ejemplo de archivo 1.xlsx", "C:\Carpeta VBA\", True)

Primero hay que crear el objeto de la clase Scripting.FileSystemObject:

Set oFSO = CreateObject("Scripting.FileSystemObject")

Luego podemos utilizar el método CopyFile:

Call oFSO.CopyFile("C:\Carpeta VBA\Ejemplo de archivo 1.xlsx", "C:\Carpeta VBA\", True)

El primer parámetro del método es la ruta de origen y el segundo es la ruta de destino. El tercer parámetro es Overwrite. Como tenemos las mismas rutas de origen y de destino, tenemos que poner Overwrite en True o False. En este ejemplo, ponemos True, lo que significa que el archivo original se sobrescribe.

Veamos ahora qué pasa si tenemos los mismos destinos, pero ponemos Overwrite en False. Sólo hay que cambiar esta línea del código

Call oFSO.CopyFile("C:\Carpeta VBA\Ejemplo de archivo 1.xlsx", "C:\Carpeta VBA\", False)

Como resultado, obtendrá un error como puede ver en la Imagen 2:

Copiar archivo

 

Imagen 2. Error al copiar el archivo

Copiar y renombrar un archivo

Otra opción posible al copiar un archivo es renombrarlo. Es similar a copiar un archivo, pero ahora sólo hay que establecer la ruta de destino con un nombre diferente. Aquí está el código:

Sub Copiar_renombrar_archivo()
    Dim oFSO As Object
 
    Set oFSO = CreateObject("Scripting.FileSystemObject")
     
    Call oFSO.CopyFile("C:\Carpeta VBA\Ejemplo de archivo 1.xlsx", "C:\Carpeta VBA\Ejemplo de archivo 2.xlsx")
End Sub

Como puede ver en la última línea del código, queremos copiar el archivo «Ejemplo de archivo 1.xlsx» en la misma carpeta y nombrarlo «Ejemplo de archivo 2.xlsx«:

Call oFSO.CopyFile("C:\Carpeta VBA\Ejemplo de archivo 1.xlsx", "C:\Carpeta VBA\Ejemplo de archivo 2.xlsx")

Ahora tenemos dos archivos en la Carpeta VBA. El resultado del código está en la Imagen 3:

Copiar renombrar archivo

 

Imagen 3. Copiar y renombrar el archivo

vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples