VBA zum Auslesen von Dateieigenschaften
Schritt-für-Schritt-Anleitung
Um mit VBA die Dateieigenschaften auszulesen, kannst du den folgenden Code verwenden. Dieser Code liest alle wichtigen Informationen von Dateien in einem bestimmten Ordner aus und kann leicht angepasst werden, um auch Unterordner zu berücksichtigen:
Option Explicit
Sub Dateieigenschaften()
Const STRFOLDER As String = "C:\Users\User\OneDrive\WalterOnedrive\Fotos" ' anpassen
Dim objShell As Object
Dim objFolder As Object
Dim x As Byte
Dim spalte As Integer
Dim zeile As Long
Dim varName, arrHeaders(34)
If Dir(STRFOLDER, 16) = "" Then
MsgBox "Der Ordner " & STRFOLDER & " wurde nicht gefunden!", vbExclamation
Exit Sub
End If
Application.ScreenUpdating = False
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(STRFOLDER)
spalte = 1
For x = 0 To 33
arrHeaders(x) = objFolder.GetDetailsOf(varName, x)
Cells(1, spalte + x) = arrHeaders(x)
Next
Rows(1).Font.Bold = True
zeile = 2
For Each varName In objFolder.Items
For x = 0 To 33
Cells(zeile, spalte + x) = objFolder.GetDetailsOf(varName, x)
Next
zeile = zeile + 1
Next
Columns.AutoFit
Application.ScreenUpdating = True
End Sub
Um auch die Dateieigenschaften von Unterordnern auszulesen, kannst du den Code wie folgt anpassen:
Private Sub GetDateieigenschaften()
Dim varName
On Error GoTo Fehler
For Each varName In objFolder.Items
Select Case objFolder.GetDetailsOf(varName, 2) ' Elementtyp
Case "Dateiordner", "Folder"
' Dateiordner nicht listen
Case Else
spalte = 0
For x = 0 To 33
spalte = spalte + 1
Cells(zeile, spalte) = objFolder.GetDetailsOf(varName, x)
Next
spalte = spalte + 1
Cells(zeile, spalte) = objFolder.Self.Path
zeile = zeile + 1
End Select
Next
Set FO = FSO.GetFolder(objFolder.Self.Path)
For Each FU In FO.Subfolders
Set objFolder = objShell.Namespace(FU.Path)
Call GetDateieigenschaften
Next
Fehler:
' Fehlerbehandlung hier
End Sub
Häufige Fehler und Lösungen
Alternative Methoden
Eine alternative Methode zum Auslesen von Dateieigenschaften ist die Verwendung des FileSystemObject
. Mit FileSystemObject
kannst du die Eigenschaften von Dateien direkt abfragen, was die Ausführung beschleunigen kann:
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim Datei As Object
Set Datei = FSO.GetFile("C:\Pfad\Zur\Datei.txt")
MsgBox Datei.DateCreated
Praktische Beispiele
Hier sind einige nützliche Beispiele für das Auslesen spezifischer Dateieigenschaften:
-
Erstellungsdatum einer Datei:
MsgBox Datei.DateCreated
-
Letzte Änderung einer Datei:
MsgBox Datei.DateLastModified
-
Dateigröße:
MsgBox Datei.Size
Diese Eigenschaften können leicht in den obigen Code integriert werden, um eine detaillierte Übersicht über die Dateien zu erhalten.
Tipps für Profis
- Verwende
Option Explicit
: Dies hilft, mögliche Fehler bei der Variablenbenennung zu vermeiden.
- Optimierung durch Arrays: Wenn du eine große Anzahl von Dateien ausliest, kann es hilfreich sein, die Ergebnisse zuerst in einem Array zwischenzuspeichern und dann in die Zellen zu schreiben.
- Fehlerbehandlung: Implementiere eine robuste Fehlerbehandlung, um sicherzustellen, dass das Makro auch bei unerwarteten Problemen weiterläuft.
FAQ: Häufige Fragen
1. Kann ich den Code für andere Ordner verwenden?
Ja, passe einfach den Pfad in der Konstante STRFOLDER
an.
2. Wie kann ich die Anzahl der ausgelesenen Dateieigenschaften anpassen?
Die Anzahl der Eigenschaften wird durch die Schleife im Code bestimmt. Du kannst den Wert in der Schleife anpassen, um mehr oder weniger Eigenschaften auszulesen.
3. Funktioniert dieser Code in Excel 365?
Ja, der Code sollte in Excel 365 sowie in den vorherigen Versionen von Excel funktionieren, solange VBA unterstützt wird.