Este tutorial demonstrará como usar o método MoveFile do FileSystemObject.
Mover arquivos com VBA FileSystemObject
O método MoveFile move um ou mais arquivos de um local para outro.
Definir Referência VBA
Primeiro, ao usar FileSystemObjects, você pode ter que definir uma referência para a biblioteca de tempo de execução de script VB: abra o Editor do Visual Basic (ALT + F11), selecione Ferramentas> Referências no menu suspenso e marque a caixa de seleção de 'Microsoft Scripting Runtime'.
FileSystemObject
Em segundo lugar, você deve criar o FileSystemObject:
12 | Dim FSO As New FileSystemObjectDefina FSO = CreateObject ("Scripting.FileSystemObject") |
Agora você tem acesso a MoveFile e outros métodos FileSystemObject.
Programação VBA | O Code Generator funciona para você!
Mover um arquivo
Para mover um único arquivo, você pode usar a sintaxe simples de FSO.MoveFile (origem, destino).
1 | FSO.MoveFile "C: \ Src \ TestFile.txt", "C: \ Dst \ ModTestFile.txt" |
Conforme mencionado acima, primeiro você precisa criar o FileSystemObject:
1234567 | Sub FSOMoveFile ()Dim FSO As New FileSystemObjectDefina 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:
1 | FSO.MoveFile "C: \ Src \ TestFile * .txt", "C: \ Dst \" |
Ou você pode mover vários arquivos com a mesma extensão:
1 | FSO.MoveFile "C: \ Src \ * .xlsx", "C: \ Dst \" |
Ou simplesmente todos os arquivos de uma pasta:
1 | FSO.MoveFile "C: \ Src \ *", "C: \ Dst \" |
Observe, aqui usamos o caractere curinga *.
Em vez de usar o caractere curinga *, você pode mover todos os arquivos em uma pasta usando um loop For Each.
12345678910111213141516 | Sub FSOMoveAllFiles ()Dim FSO As New FileSystemObjectDim FromPath As StringDim ToPath As StringDim FileInFromFolder As ObjectFromPath = "C: \ Src \"ToPath = "C: \ Dst \"Defina FSO = CreateObject ("Scripting.FileSystemObject")Para cada FileInFromFolder em FSO.GetFolder (FromPath) .FilesFileInFromFolder.Move ToPathPróximo FileInFromFolderEnd Sub |
Mover o 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
1 | MkDir "C: \ Dst \" |
antes de declarar o caminho de destino.
1234567891011121314151617 | Sub FSOMoveAllFiles ()Dim FSO As New FileSystemObjectDim FromPath As StringDim ToPath As StringDim FileInFromFolder As ObjectFromPath = "C: \ Src \"MkDir "C: \ Dst \"ToPath = "C: \ Dst \"Defina FSO = CreateObject ("Scripting.FileSystemObject")Para cada FileInFromFolder em FSO.GetFolder (FromPath) .FilesFileInFromFolder.Move ToPathPróximo FileInFromFolderEnd Sub |
Cansado de procurar exemplos de código VBA? Experimente o AutoMacro!
Mover pastas
Você pode usar o método analógico MoveFolder para mover pastas.
1234567 | Sub FSOMoveFolder ()Dim FSO As New FileSystemObjectDefina FSO = CreateObject ("Scripting.FileSystemObject")FSO.MoveFolder "C: \ OldFolder", "C: \ Dst \ NewFolder"End Sub |