VBA – GetFolder & GetFile (Datei- & Ordnereigenschaften abrufen)
In this Article
In diesem Tutorial zeigen wir Ihnen, wie Sie die Methoden GetFolder und GetFile des FileSystemObjects verwenden können.
Ordner- und Dateieigenschaften mit VBA-FileSystemObject abrufen
Die GetFolder-Methode gibt ein Ordnerobjekt, das dem Ordner im angegebenen Pfad entspricht, zurück und ermöglicht den Zugriff auf seine Eigenschaften. Die GetFile-Methode macht dasselbe mit der angegebenen Datei.
VBA-Verweis setzen
Wenn Sie FileSystemObject verwenden, müssen Sie zunächst einen Verweis auf die VB-Skript-Laufzeitbibliothek setzen. Dazu Öffnen Sie den Visual Basic Editor (ALT+F11), wählen Sie Verweise im Dropdown-Menü Extras und aktivieren Sie das Kontrollkästchen „Microsoft Scripting Runtime“.
FileSystemObject
Zweitens müssen Sie das FileSystemObject erstellen:
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
Jetzt haben Sie Zugriff auf GetFolder und die anderen FileSystemObject-Methoden.
Verwendung der GetFolder-Methode
Nachdem Sie den Ordner, auf den Sie zugreifen möchten, angegeben haben,
Set ordner = FSO.GetFolder("C:\Quelle\")
können Sie den Ordner kopieren:
ordner.Copy "C:\NeuerOrdner\"
den Ordner verschieben:
ordner.Move "C:\NeuerOrdner\"
ordner.Delete
oder eine neue Textdatei in diesem Ordner erstellen:
ordner.CreateTextFile "NeueTextDatei.txt"
Mit dieser Methode erhalten Sie Zugriff auf die Eigenschaften des Ordners wie seine Attribute (ordner.Attributes), das Datum und die Uhrzeit, wann er erstellt wurde (ordner.DateCreated), wann zuletzt darauf zugegriffen wurde (ordner.DateLastAccessed), wann er zuletzt geändert wurde (ordner.DateLastModified), den Laufwerksbuchstaben (ordner.Drive), seinen Namen und Kurznamen (ordner.Name, fld.ShortName), sein Pfad und Kurzpfad (ordner.Path, ordner.ShortPath), seine Größe (ordner.Size), sein Typ (ordner.Type), sein übergeordneter Ordner (ordner.ParentFolder), die Überprüfung, ob es sich um einen Stammordner handelt (ordner.IsRootFolder), oder Sie können seine Dateien (ordner.Files) oder Unterordner (ordner.SubFolders) in einer Schleife durchgehen, zählen, usw..
Wenn wir das alles in einer Prozedur zusammenfasst, würde es so aussehen:
Sub FSOGetFolder()
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ordner = FSO.GetFolder("C:\Quelle\")
Debug.Print ordner.DateCreated
Debug.Print ordner.Drive
Debug.Print ordner.Name
Debug.Print ordner.ParentFolder
Debug.Print ordner.Path
Debug.Print ordner.ShortPath
Debug.Print ordner.Size
Debug.Print ordner.Files.Count
Debug.Print ordner.Type
For Each unterordner In ordner.SubFolders
Debug.Print unterordner.Name
Next unterordner
For Each datei In ordner.Files
Debug.Print datei.Name
Next datei
End Sub
Bitte beachten Sie, dass Sie Strg + G drücken können, um das Ergebnis von Debug.Print im VBA-Direktfenster zu sehen.
Die GetParentFolderName-Methode
Alternativ zur oben genannten Methode können Sie den Namen des übergeordneten Ordners mit diesem Code abrufen:
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
Uebergeordneter_Ordner= FSO.GetParentFolderName("C:\Uebergeordneter_Ordner_Test\Test\")
Uebergeordneter_Ordner wird in diesem Fall „C:\Uebergeordneter_Ordner_Test\“ sein.
Bitte beachten Sie, dass diese Methode den Pfad nicht auflöst und auch nicht prüft, ob der angegebene Pfad existiert.
Die GetSpecialFolder-Methode
Mit der Methode GetSpecialFolder können Sie durch die Übergabe von 0, 1 oder 2 als Argument den Windows-Ordnerpfad (mit den vom Windows-Betriebssystem installierten Dateien), den Systemordnerpfad (mit Bibliotheken, Schriftarten und Gerätetreibern) bzw. den Pfad des temporären Ordners (der Ordner, in dem temporäre Dateien gespeichert werden) ermitteln.
Sub FSOGetSpecialFolder()
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
Debug.Print FSO.GetSpecialFolder(0) 'Ergebnis kann Folgendes sein: C:\Windows\System32
End Sub
Die GetFile-Methode
Sie können die GetFile-Methode auf ähnliche Weise wie die GetFolder-Methode verwenden. Nachdem Sie die Datei, auf die Sie zugreifen möchten, angegeben haben,
Set datei = FSO.GetFile("C:\Quelle\Test.xlsx")
können Sie die Datei kopieren:
datei.Copy "C:\Ziel\"
datei.Move "C:\Ziel\"
datei.Delete
oder sie als TextStream-Objekt öffnen:
datei.OpenAsTextStream
Auf die Eigenschaften der Datei wie ihre Attribute, das Datum und die Uhrzeit der Erstellung, des letzten Zugriffs oder der letzten Änderung, den Laufwerksbuchstaben, den Namen und den Kurznamen, den Pfad und den Kurzpfad, die Größe, den Typ und den übergeordneten Ordner kann auf dieselbe Weise wie bei der GetFolder-Methode beschrieben zugegriffen werden.