Mover Archivos con VBA FileSystemObject (MoveFile)
In this Article
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’.
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