Mover Archivos con VBA FileSystemObject (MoveFile)

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on agosto 12, 2022

Este tutorial demostrará cómo utilizar el método MoveFile del FileSystemObject.

Mover Archivos con VBA FileSystemObject

El método MoveFile mueve uno o más archivos de una ubicación a otra.

Establecer la Referencia VBA

En primer lugar, al utilizar FileSystemObject, es posible que tengas que establecer una referencia a la biblioteca de tiempo de ejecución de scripts VB: abre el Editor de Visual Basic(ALT + F11), selecciona Herramientas > Referencias en el menú desplegable y marca la casilla de ‘Microsoft Scripting Runtime’.

Referencias VBA

 

FileSystemObject

En segundo lugar, debes crear el FileSystemObject:

Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject") 

Ahora tienes acceso a MoveFile, y a los otros métodos de FileSystemObject.

Mover un Archivo

Para mover un solo archivo, puede utilizar la sencilla sintaxis de FSO.MoveFile( origen, destino ).

FSO.MoveFile "C:\Src\TestFile.txt", "C:\Dst\ModTestFile.txt"

Como se mencionó anteriormente, primero hay que crear el FileSystemObject:

Sub FSOMoveFile()
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject") 

    FSO.MoveFile "C:\Src\TestFile.txt", "C:\Dst\ModTestFile.txt"

End Sub

Mover Múltiples Archivos

Puede mover múltiples archivos con partes del mismo nombre:

FSO.MoveFile "C:\Src\TestFile*.txt", "C:\Dst\"

O puede mover múltiples archivos con la misma extensión:

FSO.MoveFile "C:\Src\*.xlsx", "C:\Dst\"

O simplemente todos los archivos de una carpeta:

FSO.MoveFile "C:\Src\*", "C:\Dst\"

Fíjese, aquí hacemos uso del carácter comodín *.

En lugar de utilizar el comodín *, puede mover todos los archivos de una carpeta utilizando un bucle For Each.

Sub FSOMoveAllFiles ()
    Dim FSO As New FileSystemObject 
    Dim FromPath As String
    Dim ToPath As String
    Dim FileInFromFolder As Object

    FromPath = "C:\Src\"   
    ToPath = "C:\Dst\"  
   
    Set FSO = CreateObject("Scripting.FileSystemObject")

    For Each FileInFromFolder In FSO.GetFolder(FromPath).Files
    	FileInFromFolder.Move ToPath
    Next FileInFromFolder

End Sub

Mover el Archivo a Una Nueva Carpeta

También puede mover los archivos a una carpeta recién creada. Para ello, añada el comando

MkDir "C:\Dst\"

antes de declarar la ruta de destino.

Sub FSOMoveAllFiles ()
    Dim FSO As New FileSystemObject 
    Dim FromPath As String
    Dim ToPath As String
    Dim FileInFromFolder As Object

    FromPath = "C:\Src\"  
    MkDir "C:\Dst\"
    ToPath = "C:\Dst\" 
    
    Set FSO = CreateObject("Scripting.FileSystemObject")

    For Each FileInFromFolder In FSO.GetFolder(FromPath).Files
    	FileInFromFolder.Move ToPath
    Next FileInFromFolder

End Sub

Mover Carpetas

Puede utilizar el método análogo MoveFolder para mover carpetas.

Sub FSOMoveFolder()
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject") 

    FSO.MoveFolder "C:\CarpetaAntigua", "C:\Destino\NuevaCarpeta"

End Sub
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