Dokumenteigenschaften in Excel effizient auslesen
Schritt-für-Schritt-Anleitung
- Öffne dein Excel-Dokument und aktiviere den VBA-Editor mit
ALT + F11
.
- Erstelle ein neues Modul: Klicke im Projektfenster mit der rechten Maustaste auf ein Projekt und wähle
Einfügen > Modul
.
- Füge den folgenden Code ein, um die Dateieigenschaften auszulesen:
Sub EigenschaftenAuslesen()
Const STRFOLDER As String = "\\server\pfad" ' Anpassen
Dim objShell As Object
Dim objFolder As Object
Dim objFile As Object
Dim fltVersion As Integer
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(STRFOLDER)
Set objFile = objFolder.ParseName("datei.xlsx") ' Dateiname anpassen
fltVersion = objFolder.GetDetailsOf(objFile, 12) ' Version auslesen
MsgBox "Die Versionsnummer ist: " & fltVersion
End Sub
- Passe den Pfad und Dateinamen entsprechend deiner Datei an.
- Führe das Makro aus, um die Versionsnummer anzuzeigen.
Häufige Fehler und Lösungen
-
Fehler: "Der Ordner wurde nicht gefunden!"
- Stelle sicher, dass der angegebene Pfad korrekt ist und dass du die erforderlichen Berechtigungen für den Zugriff auf den Server hast.
-
Fehler: "Objekt nicht gefunden"
- Überprüfe, ob der Dateiname korrekt angegeben ist und ob die Datei existiert.
-
Lösung: Falsche Indizes verwenden
- Achte darauf, dass die Indizes in
GetDetailsOf
für die gewünschten Eigenschaften korrekt sind (z. B. Version, Erstellungsdatum).
Alternative Methoden
Eine einfache Möglichkeit, um die Dateieigenschaften auszulesen, ohne die Datei vollständig zu öffnen, besteht darin, die Windows-Shell zu verwenden. Hier ist ein Beispiel, wie du die DIR()
-Funktion nutzen kannst, um zu überprüfen, ob eine neuere Version der Datei vorhanden ist:
If Dir("\\server\pfad\datei V2.xlsm") = "" Then
MsgBox "Neue Version liegt vor"
End If
Eine weitere Methode ist die Verwendung von FILEDATETIME
, um das Erstellungsdatum der Datei zu überprüfen.
Praktische Beispiele
- Versionsvergleich bei Dateiöffnung:
Verwende den folgenden Code, um bei jeder Dateiöffnung die Versionsnummer mit der auf dem Server zu vergleichen:
Sub auto_open()
Const STRFOLDER As String = "\\server\pfad"
Const STRFILE As String = "datei.xlsm"
Dim objShell As Object
Dim objFolder As Object
Dim objFile As Object
Dim fltVersionNeu As Integer
Dim fltVersionAktuell As Integer
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(STRFOLDER)
Set objFile = objFolder.ParseName(STRFILE)
fltVersionAktuell = ActiveWorkbook.BuiltinDocumentProperties(18)
fltVersionNeu = objFolder.GetDetailsOf(objFile, 12)
If fltVersionAktuell < fltVersionNeu Then
MsgBox "Eine neuere Version ist verfügbar!"
End If
End Sub
- Dateieigenschaften für alle Dateien eines Ordners auslesen:
Hier ist ein Beispiel, um die Eigenschaften aller Dateien in einem bestimmten Ordner aufzulisten:
Sub Dateieigenschaften()
Const STRFOLDER As String = "C:\Eigene Dateien"
Dim objShell As Object
Dim objFolder As Object
Dim varName As Variant
Dim x As Byte
Dim lngRow As Long
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(STRFOLDER)
lngRow = 1
For Each varName In objFolder.Items
For x = 0 To 33
Cells(lngRow, x + 1) = objFolder.GetDetailsOf(varName, x)
Next x
lngRow = lngRow + 1
Next varName
End Sub
Tipps für Profis
- Verwende Konstanten: Definiere den Pfad und Dateinamen als Konstanten, um deinen Code flexibler und leichter wartbar zu machen.
- Fehlerbehandlung einbauen: Implementiere Fehlerbehandlungsroutinen, um unerwartete Probleme zu vermeiden.
- Dokumentiere deinen Code: Kommentiere wichtige Abschnitte, damit du oder andere den Code später leichter nachvollziehen können.
FAQ: Häufige Fragen
1. Wie kann ich die Dateieigenschaften einer Datei auslesen, ohne sie zu öffnen?
Mit der Verwendung der Shell-Anwendung in VBA kannst du die Dateieigenschaften (z. B. Version) auslesen, ohne die Datei vollständig zu öffnen.
2. Ist es möglich, mehrere Dateien gleichzeitig auszulesen?
Ja, du kannst eine Schleife verwenden, um alle Dateien in einem bestimmten Verzeichnis zu durchlaufen und deren Eigenschaften auszulesen.
3. Welche Excel-Version benötige ich für diese Makros?
Die meisten dieser Makros sind ab Excel 2007 einsetzbar, jedoch können einige Funktionen in früheren Versionen nicht verfügbar sein.