Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datei-Eigenschaften auslesen

Datei-Eigenschaften auslesen
03.08.2016 09:47:47
Hettich
Hallo VBA-Profis,
habe leider noch keine VBA-Erfahrung und möchte nun die ersten VBA-Schritte machen.
Ich möchte aus den (geschlossenen) Dateien
"Z:\Finance\ZZ-Filetransfers\Matstamm.xlsx" und
"Z:\Finance\ZZ-Filetransfers\Debstamm.xlsx"
die Eigenschaften (Dateiname,Pfad,letzte Speicherung) auslesen und in die aktuelle Excel Datei in das Tabellenblatt "Upload-Info" in die Spalte A ab Zelle 1 eintragen.
Danke schon mal
Grüße Volker
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei-Eigenschaften auslesen
03.08.2016 10:08:38
Michael
Hallo Volker!
habe leider noch keine VBA-Erfahrung und möchte nun die ersten VBA-Schritte machen.
Und dann gleich Datei-Manipulationen im Dateisystem? Na gut, aber...
Ich möchte aus den (geschlossenen) Dateien ... die Eigenschaften (Dateiname,Pfad,letzte Speicherung) auslesen
Dateiname und -pfad sind Dir ja offenbar bekannt - wozu also auslesen? Da ist es vermutlich besser, alle Dateien in Deiner Tabelle aufzulisten (zB ab A2:Ax) und diesen Bereich dann in einer Schleife abzuarbeiten um für alle dort gelisteten Dateien (inkl. vollständigem Pfad!) die letzte Änderung auszulesten und aufzulisten.
Oder Du gibst im Code nur das Ausgangsverzeichnis an (bspw. Z:\Finance\ZZ-Filetransfers\) und in der Tabelle nur die Dateinamen, oder Du lässt das Ausgangsverzeichnis per Datei-Dialog auswählen oder, oder, oder...
Wie sehen Deine Verhältnisse/Bedürfnisse denn konkret aus... Da geht's doch sicher nicht um nur zwei Tabellen, oder?!
LG
Michael
Anzeige
AW: Datei-Eigenschaften auslesen
03.08.2016 10:20:11
Daniel
Hi
wie Michael schon schrieb, Dateiname und Pfad sind dir ja schon bekannt.
wenn du den vollständigen Dateinamen in Pfad und Dateinamen zerlegen willst, dann so:
VollständigerDateiname = "Z:\Finance\ZZ-Filetransfers\Matstamm.xlsx"
Pfad = Left(VollständigerDateiname, InstrRev(VollständigerDateiname, "\") - 1)
Dateiname = Mid(VollständigerDateiname, InstrRev(VollständigerDateiname, "\") + 1)
Wenn die Datei geschlossen ist, kannst du FileDateTime(VollständigerDateiname) den Zeitpunkt des letzten Speicherns ermitteln.
Sollte die Datei gedoch geöffnet sein (egal von wem) bekommst du den Zeitpunkt des Öffnens.
Gruß Daniel
Anzeige
AW: Datei-Eigenschaften auslesen
03.08.2016 13:37:26
Hettich
Hallo Michael,
um meine Aufgabenstellung zu konkretisieren - und auch gleich noch eine Änderung, damit das Coding für alle Excel Tabellen mit Uploads passt :-).
In dem Tabellenblatt "Upload-Info" steht in der
Spalte "A" Dateipfad
Spalte "B" Dateiname
Die Anzahl der Zeilen sollte variabel sein.
Abfrage der "letzten Änderung" für alle Zeilen der Spalten A/B soweit die Zellen "Blank".
Die Schleife ausführen und den Wert "letzte Änderung" in Spalte C (neben der ausgelesenen Datei)schreiben.
Grüße Volker
Anzeige
AW: Datei-Eigenschaften auslesen
03.08.2016 14:20:46
Michael
Hallo Volker!
Na dann ;-)...
Sub ShowLastMod()
Const STR_BLATT As String = "Upload-Info"
Dim Wb As Workbook
Dim Ws As Worksheet
Dim r As Range
Dim f As Range
Dim sPfad As String
Dim sDname As String
Dim oFSO As Object
Dim oFile As Object
Set Wb = ThisWorkbook
Set Ws = Wb.Worksheets(STR_BLATT)
Set oFSO = CreateObject("Scripting.FileSystemObject")
With Ws
Set r = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
For Each f In r
If Not f.Value = vbNullString Then
sPfad = f.Text
If Right(sPfad, 1)  "\" Then sPfad = sPfad & "\"
sDname = f.Offset(, 1).Text
Set oFile = oFSO.getfile(sPfad & sDname)
f.Offset(, 2).Value = oFile.DateLastModified
End If
Next f
End With
End Sub
Auf dem Blatt Upload-Info, in A1:C3 stehen Überschriften, d.h. Pfad- und Dateieinträge ab A2.
Klappt?
LG
Michael
Anzeige
AW: Datei-Eigenschaften auslesen
03.08.2016 14:42:26
Hettich
Hallo Michael,
läuft noch in der Zeile
Set oFile = oFSO.getfile(sPfad & sDname)
auf Fehler -Datei nicht gefunden - .
Grüße Volker
AW: Datei-Eigenschaften auslesen
03.08.2016 14:47:28
Michael
Hi!
Was wird an der Stelle übergeben? Welchen Wert haben sPfad und sDname zum Zeitpunkt des Fehlers?
LG
Michael
AW: Datei-Eigenschaften auslesen
03.08.2016 15:11:24
Hettich
Hi Michael,
kaum schreibt man die Datei richtig, schon klappt es. Super, vielen Dank.
Da würde es Sinn machen, im Falles eines falschen Tabelleneintrags einen Hinweis "Datei nicht gefunden" in die Spalte C zu schreiben.
Anzeige
AW: Datei-Eigenschaften auslesen
03.08.2016 15:33:43
Michael
Hallo!
Gelle ;-)... Hier mit Hinweis:
Sub ShowLastMod()
'Auf dem Blatt Upload-Info, in A1:C3 stehen Überschriften,
'd.h. Pfad- und Dateieinträge ab A2.
Const STR_BLATT As String = "Upload-Info"
Dim Wb As Workbook
Dim Ws As Worksheet
Dim r As Range
Dim f As Range
Dim sPfad As String
Dim sDname As String
Dim oFSO As Object
Dim oFile As Object
Set Wb = ThisWorkbook
Set Ws = Wb.Worksheets(STR_BLATT)
Set oFSO = CreateObject("Scripting.FileSystemObject")
With Ws
Set r = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
For Each f In r
If Not f.Value = vbNullString Then
sPfad = f.Text
If Right(sPfad, 1)  "\" Then sPfad = sPfad & "\"
sDname = f.Offset(, 1).Text
If oFSO.FileExists(sPfad & sDname) = True Then
Set oFile = oFSO.getfile(sPfad & sDname)
f.Offset(, 2).Value = oFile.DateLastModified
Else: f.Offset(, 2).Value = "Datei nicht gefunden!"
End If
End If
Next f
End With
End Sub
Passt?
LG
Michael
Anzeige
AW: Datei-Eigenschaften auslesen
03.08.2016 15:37:41
Hettich
Perfekt, vielen Dank !
Grüße Volker
Das hör ich gerne ;-) - Gern, owT
03.08.2016 17:39:49
Michael
;
Anzeige
Anzeige

Infobox / Tutorial

Datei-Eigenschaften mit VBA auslesen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe zu dem Workbook, in dem Du die Datei-Eigenschaften auslesen möchtest.

  2. Öffne den VBA-Editor mit ALT + F11.

  3. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinDateiname)" > Einfügen > Modul.

  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub ShowLastMod()
        'Auf dem Blatt Upload-Info, in A1:C3 stehen Überschriften,
        'd.h. Pfad- und Dateieinträge ab A2.
        Const STR_BLATT As String = "Upload-Info"
        Dim Wb As Workbook
        Dim Ws As Worksheet
        Dim r As Range
        Dim f As Range
        Dim sPfad As String
        Dim sDname As String
        Dim oFSO As Object
        Dim oFile As Object
        Set Wb = ThisWorkbook
        Set Ws = Wb.Worksheets(STR_BLATT)
        Set oFSO = CreateObject("Scripting.FileSystemObject")
    
        With Ws
            Set r = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
            For Each f In r
                If Not f.Value = vbNullString Then
                    sPfad = f.Text
                    If Right(sPfad, 1) <> "\" Then sPfad = sPfad & "\"
                    sDname = f.Offset(, 1).Text
                    If oFSO.FileExists(sPfad & sDname) = True Then
                        Set oFile = oFSO.getfile(sPfad & sDname)
                        f.Offset(, 2).Value = oFile.DateLastModified
                    Else
                        f.Offset(, 2).Value = "Datei nicht gefunden!"
                    End If
                End If
            Next f
        End With
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus: Gehe zu "Entwicklertools" > "Makros" > wähle ShowLastMod aus und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Fehler: Datei nicht gefunden

    • Überprüfe den Pfad und den Dateinamen in den Zellen A und B. Achte darauf, dass der Pfad korrekt eingegeben ist und die Datei existiert.
  • Fehler: Laufzeitfehler

    • Stelle sicher, dass die Excel-Datei, die Du auslesen möchtest, nicht geöffnet ist. Wenn sie geöffnet ist, erhältst Du möglicherweise nicht die gewünschten Eigenschaften.

Alternative Methoden

Eine Alternative zum Auslesen der Datei-Eigenschaften ist die Verwendung von Power Query oder Excel-Formeln, sofern die Dateien nicht zu viele sind. Diese Methoden erfordern jedoch manuelle Eingaben oder die Verwendung von externen Tools.


Praktische Beispiele

  1. Datei-Eigenschaften auslesen für mehrere Dateien:
    Du kannst die Dateipfade und Namen in die Spalten A und B eingeben. Der VBA-Code wird dann die letzte Änderung für alle Dateien in Spalte C auslesen.

  2. Dynamische Anpassung:
    Der Code liest nur die Zeilen aus, die in Spalte A belegt sind, und kann somit für eine variable Anzahl von Dateien verwendet werden.


Tipps für Profis

  • Fehlerbehandlung: Ergänze den Code mit einer Fehlerbehandlung, um spezifische Fehlermeldungen auszugeben, falls etwas schiefgeht.

  • Erweiterung des Codes: Du kannst den Code anpassen, um weitere Dateieigenschaften wie Erstellungsdatum oder Dateigröße auszulesen, indem Du entsprechende Methoden der FileSystemObject-Klasse verwendest.


FAQ: Häufige Fragen

1. Wie kann ich die Datei-Eigenschaften automatisieren?
Du kannst den Code in eine Excel-Vorlage einfügen und bei Bedarf ausführen, um die Eigenschaften mehrerer Dateien automatisch auszulesen.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code sollte in den meisten modernen Excel-Versionen (ab Excel 2010) funktionieren, solange VBA aktiviert ist.

3. Was ist, wenn ich mehr Informationen als nur das Änderungsdatum benötige?
Du kannst den FileSystemObject erweitern, um auch andere Eigenschaften wie Erstellungsdatum oder Dateigröße zu erhalten, indem Du die entsprechenden Eigenschaften abfragst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige