VBA le permite copiar un archivo, usando el FileSystemObject. En este tutorial, aprenderá a copiar y cambiar el nombre de un archivo específico.
Si desea aprender a cambiar el nombre de un archivo, puede hacer clic en este enlace: VBA Rename File
Copiar un archivo / libro de trabajo
Mostraremos cómo copiar el archivo existente. Archivo de muestra 1.xlsx en la carpeta Carpeta VBA. En este ejemplo, no cambiaremos el nombre del archivo, solo lo copiaremos y sobrescribiremos. Actualmente, la carpeta solo tiene este archivo:
Imagen 1. Archivo en la carpeta C: \ Carpeta VBA
Aquí está el código:
12345 | Dim oFSO como objetoEstablecer oFSO = CreateObject ("Scripting.FileSystemObject")Llame a oFSO.CopyFile ("C: \ Carpeta VBA \ Archivo de muestra 1.xlsx", "C: \ Carpeta VBA \", True) |
Primero necesitas crear el objeto de la clase. Scripting.FileSystemObject:
1 | Establecer oFSO = CreateObject ("Scripting.FileSystemObject") |
Entonces podemos usar el método Copiar archivo:
1 | Llame a oFSO.CopyFile ("C: \ Carpeta VBA \ Archivo de muestra 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 Sobrescribir. Como tenemos las mismas rutas de origen y destino, debemos configurar Sobrescribir a Verdadero o Falso. En este ejemplo, ponemos True, lo que significa que se sobrescribe el archivo original.
Veamos ahora qué sucede si tenemos los mismos destinos, pero configuramos Sobrescribir en Falso. Solo necesita cambiar esta línea del código:
1 | Llame a oFSO.CopyFile ("C: \ Carpeta VBA \ Archivo de muestra 1.xlsx", "C: \ Carpeta VBA \", True) |
Como resultado, obtendrá un error como puede ver en la Imagen 2:
Imagen 2. Error al copiar el archivo
Copiar y cambiar el nombre de un archivo
Otra opción posible al copiar un archivo es cambiarle el nombre. Es similar a copiar un archivo, pero ahora solo necesita establecer la ruta de destino con un nombre diferente. Aquí está el código:
12345 | Dim oFSO como objetoEstablecer oFSO = CreateObject ("Scripting.FileSystemObject")Llame a oFSO.CopyFile ("C: \ Carpeta VBA \ Archivo de muestra 1.xlsx", "C: \ Carpeta VBA \ Archivo de muestra Copy.xlsx") |
Como puede ver en la última línea del código, queremos copiar el archivo Archivo de muestra 1.xlsx en la misma carpeta y asígnele el nombre Archivo de muestra Copy.xlsx:
1 | Llame a oFSO.CopyFile ("C: \ Carpeta VBA \ Archivo de muestra 1.xlsx", "C: \ Carpeta VBA \ Archivo de muestra Copy.xlsx") |
Ahora tenemos dos archivos en la carpeta VBA. El resultado del código está en la Imagen 3:
Imagen 3. Copie y cambie el nombre del archivo