Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

VBA: Función FileCopy para copiar y mover ficheros desde Excel

Tocaremos un tema interesante y recurrente. La gestión de ficheros y carpetas desde Excel.
En particular hoy aprenderemos a usar la función VBA FileCopy.

Esta función se engloba en un conjunto de funciones de 'archivo/carpeta' como pueden ser (algunas ya vistas en el blog):
ChDir
ChDrive
Dir
FileCopy
FileDateTime
FileLen
GetAttr
Kill
MkDir
SetAttr
(en orden alfabético).


La que toca hoy FileCopy realiza un trabajo simple: copia un archivo desde una ubicación a otra.

Imaginemos el siguiente trabajo. Tenemos un listado en nuestra hoja de Excel donde disponemos de las equivalencias de una serie de archivos. Esta equivalencia responde a 'ubicación original' vs 'ubicación destino':

VBA: Función FileCopy para copiar y mover ficheros desde Excel


Notemos que al rango de celdas D2:D4 se le ha asignado un nombre definido 'origen', con el fin de facilitar el trabajo, y resulte más visual.

En un módulo estándar de nuestro proyecto de VB insertamos la siguiente macro 'CopiarARchivos':

Sub CopiarArchivos()
'recorremos cada celda del rango 'origen'
For Each celda In Range("origen")
'determinamos la ruta original
origen = celda.Value
'y cuál es el destino
destino = celda.Offset(0, 1).Value
'con la función FileCopy copiamos de un lugar a otro
FileCopy origen, destino
Next celda
End Sub


Tras ejecutar nuestro procedimiento, comprobaremos el resultado... ambos archivos ha sido pegados en su ubicación definitiva... incluso con el nuevo nombre de archivo.

VBA: Función FileCopy para copiar y mover ficheros desde Excel
Nota importante: Las rutas deben existir!!


OJO!!, no confundir con el método CopyFile, muy similar (casi idéntico en su composición), pero requiere la creación del objeto.

Sub CopiaArchivo()

Dim fso As Object
Set fso = VBA.CreateObject("Scripting.FileSystemObject")
'recorremos cada celda del rango 'origen'
For Each celda In Range("origen")
'determinamos la ruta original
origen = celda.Value
'y cuál es el destino
destino = celda.Offset(0, 1).Value
'empleamos el método CopyFile
fso.CopyFile origen, destino
Next celda
End Sub


El resultado es el mismo, la ventaja (según la documentación de Microsoft) es que el método es más eficiente y de mejor rendimiento...


This post first appeared on EXCEL FORO: EJERCICIOS, EJEMPLOS, SOLUCIONES, DUDA, please read the originial post: here

Share the post

VBA: Función FileCopy para copiar y mover ficheros desde Excel

×

Subscribe to Excel Foro: Ejercicios, Ejemplos, Soluciones, Duda

Get updates delivered right to your inbox!

Thank you for your subscription

×