In diesem Tutorial wird gezeigt, wie Sie die MoveFile-Methode des FileSystemObject verwenden.
Verschieben von Dateien mit VBA FileSystemObject
Die MoveFile-Methode verschiebt eine oder mehrere Dateien von einem Speicherort an einen anderen.
VBA-Referenz festlegen
Wenn Sie FileSystemObjects verwenden, müssen Sie möglicherweise zunächst eine Referenz auf die VB-Skript-Laufzeitbibliothek setzen: Öffnen Sie den Visual Basic-Editor (ALT+F11), wählen Sie Tools > References aus dem Dropdown-Menü und aktivieren Sie das Kontrollkästchen von 'Microsoft Scripting-Laufzeit'.
FileSystemObject
Zweitens müssen Sie das FileSystemObject erstellen:
12 | Dim FSO als neues FileSystemObjectFSO setzen = CreateObject("Scripting.FileSystemObject") |
Jetzt haben Sie Zugriff auf MoveFile und die anderen FileSystemObject-Methoden.
VBA-Programmierung | Code Generator arbeitet für Sie!
Eine Datei verschieben
Um eine einzelne Datei zu verschieben, können Sie die einfache Syntax von FSO.MoveFile( source, destination ) verwenden.
1 | FSO.MoveFile "C:\Src\TestFile.txt", "C:\Dst\ModTestFile.txt" |
Wie oben erwähnt, müssen Sie zuerst das FileSystemObject erstellen:
1234567 | Unter FSOMoveFile()Dim FSO als neues FileSystemObjectFSO setzen = CreateObject("Scripting.FileSystemObject")FSO.MoveFile "C:\Src\TestFile.txt", "C:\Dst\ModTestFile.txt"End Sub |
Mehrere Dateien verschieben
Sie können mehrere Dateien mit gleichen Namensteilen verschieben:
1 | FSO.MoveFile "C:\Src\TestFile*.txt", "C:\Dst\" |
Oder Sie können mehrere Dateien mit derselben Erweiterung verschieben:
1 | FSO.MoveFile "C:\Src\ *.xlsx", "C:\Dst\" |
Oder einfach alle Dateien aus einem Ordner:
1 | FSO.MoveFile "C:\Src\*", "C:\Dst\" |
Beachten Sie, dass wir hier das Wildcard-Zeichen * verwenden.
Anstatt den Platzhalter * zu verwenden, können Sie alle Dateien in einem Ordner mit einer For Each-Schleife verschieben.
12345678910111213141516 | Unter FSOMoveAllFiles ()Dim FSO als neues FileSystemObjectDim FromPath As StringDim ToPath als StringDim FileInFromFolder als ObjektFromPath = "C:\Src\"ToPath = "C:\Dst\"FSO setzen = CreateObject("Scripting.FileSystemObject")Für jeden FileInFromFolder in FSO.GetFolder(FromPath).FilesFileInFromFolder.Move ToPathNächstes FileInFromFolderEnd Sub |
Datei in einen neuen Ordner verschieben
Sie können die Datei(en) auch in einen neu erstellten Ordner verschieben. Fügen Sie dazu den Befehl hinzu
1 | MkDir "C:\Dst\" |
bevor Sie den Zielpfad angeben.
1234567891011121314151617 | Unter FSOMoveAllFiles ()Dim FSO als neues FileSystemObjectDim FromPath As StringDim ToPath als StringFileInFromFolder als Objekt dimmenFromPath = "C:\Src\"MkDir "C:\Dst\"ToPath = "C:\Dst\"FSO setzen = CreateObject("Scripting.FileSystemObject")Für jeden FileInFromFolder in FSO.GetFolder(FromPath).FilesFileInFromFolder.Move ToPathNächstes FileInFromFolderEnd Sub |
Sind Sie es leid, nach VBA-Codebeispielen zu suchen? Probieren Sie AutoMacro aus!
Ordner verschieben
Sie können die analoge Methode MoveFolder zum Verschieben von Ordnern verwenden.
1234567 | Unter FSOMoveFolder()Dim FSO als neues FileSystemObjectFSO setzen = CreateObject("Scripting.FileSystemObject")FSO.MoveFolder "C:\OldFolder", "C:\Dst\NewFolder"End Sub |