Mover Arquivos com FileSystemObject (MoveFile) do VBA
In this Article
Este tutorial demonstrará como usar o método MoveFile do FileSystemObject.
Mover Arquivos com FileSystemObject do VBA
O método MoveFile move um ou mais arquivos de um local para outro.
Definir Referência do VBA
Primeiro, ao usar FileSystemObject, talvez seja necessário definir uma referência à biblioteca de tempo de execução de scripts VB: abra o Editor do Visual Basic(ALT + F11), selecione Ferramentas > Referências no menu suspenso e marque a caixa de seleção ‘Microsoft Scripting Runtime’.
FileSystemObject
Em segundo lugar, você deve criar o FileSystemObject:
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
Agora você tem acesso ao MoveFile e aos outros métodos do FileSystemObject.
Mover um Arquivo
Para mover um único arquivo, você pode usar a sintaxe simples de FSO.MoveFile( source, destination ).
FSO.MoveFile "C:\Src\TestFile.txt", "C:\Dst\ModTestFile.txt"
Como mencionado acima, primeiro você precisa criar o 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 Vários arquivos
Você pode mover vários arquivos com partes do mesmo nome:
FSO.MoveFile "C:\Src\TestFile*.txt", "C:\Dst\"
Ou você pode mover vários arquivos com a mesma extensão:
FSO.MoveFile "C:\Src\ *.xlsx", "C:\Dst\"
Ou simplesmente todos os arquivos de uma pasta:
FSO.MoveFile "C:\Src\*", "C:\Dst\"
Observe que aqui usamos o caractere curinga*.
Em vez de usar o curinga *, você pode mover todos os arquivos em uma pasta usando um loop For Each.
Sub FSOMoverTodosArquivos ()
Dim FSO As New FileSystemObject
Dim CaminhoDe As String
Dim CaminhoPara As String
Dim ArquivoNaPasta As Object
CaminhoDe = "C:\Src\"
CaminhoPara = "C:\Dst\"
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each ArquivoNaPasta In FSO.GetFolder(CaminhoDe).Files
ArquivoNaPasta.Move CaminhoPara
Next ArquivoNaPasta
End Sub
Mover Arquivo para uma Nova Pasta
Você também pode mover o(s) arquivo(s) para uma pasta recém-criada. Para fazer isso, adicione o comando
MkDir "C:\Dst\"
antes de declarar o caminho de destino.
Sub FSOMoverTodosArquivos ()
Dim FSO As New FileSystemObject
Dim CaminhoDe As String
Dim CaminhoPara As String
Dim ArquivoNaPasta As Object
CaminhoDe = "C:\Src\"
MkDir "C:\Dst\"
CaminhoPara = "C:\Dst\"
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each ArquivoNaPasta In FSO.GetFolder(CaminhoDe).Files
ArquivoNaPasta.Move CaminhoPara
Next ArquivoNaPasta
End Sub
Mover Pastas
Você pode usar o método análogo MoveFolder para mover pastas.
Sub FSOMoverPasta()
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.MoveFolder "C:\PastaAntiga", "C:\Dst\PastaNova"
End Sub