Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dateiinformationen vieler txt Dateien auslesen

Dateiinformationen vieler txt Dateien auslesen
05.06.2019 11:59:42
Simy
Hallo zusammen,
folgendes habe ich vor:
Es gibt einen Ordner (bspw. C:\Test) in dem zig .txt Dateien liegen. Jede Datei wurde von einem anderen Kollegen erstellt.
Ich würde gerne ein Makro erstellen, was die Dateiinformationen (nicht Inhalt) der einzelnen .txt ausliest und mir in einer Excel Tabelle wiedergibt. Spalte A = Erstellungsdatum der .txt Datei und Spalte B = Benutzer bzw. Ersteller dieser Datei.
In der Spalte A und B sollen dann die entspr. Dateiinformationen zu allen .txt Dateien im Ordner C:\Test untereinander stehen.
Ist sowas möglich?
Danke und Grüße
Simy
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiinformationen?
05.06.2019 12:40:14
Fennek
Hallo,
im Gegensatz zu MS-Office Dokumenten habe *.txt keine Properties (außer den Windows NTFS). Was soll da ausgelesen werden?
mfg
AW: Dateiinformationen vieler txt Dateien auslesen
05.06.2019 12:44:51
Nepumuk
Hallo Simy,
auf meinem Rechner werden keine Informationen zum Ersteller einer Datei gespeichert:
Userbild
Das Erstelldatum kannst du mit der FileDateTime-Funktion auslesen.
Gruß
Nepumuk
Anzeige
AW: Dateiinformationen vieler txt Dateien auslesen
05.06.2019 13:11:37
Simy
Hallo Nepumuk,
danke für die schnelle Antwort.
Ich habe folgenden Code heute morgen aus dem Netz "zusammengeschnippselt" und grds. funtkioniert der ganz gut.
Am wichtigsten ist mir das Auslesen des "Besitzers". Bei Dir wäre das OKTOPUS.
Mit "Application.UserName" wird aber immer nur meine eigene Benutzerkennung in die Excel-Spalte geschrieben und nicht vom Benutzer der die Datei erstellt hat.
Bei allen txt Dateien im Ordner C:\ Test ist ein anderer Benutzer gespeichert, wenn ich die Dateieigenschaften über das Kontexmenü aufrufe.
Hast Du eine Idee wie ich den "richtigen" Benutzer auslesen kann?
Danke und Gruß
Hier mein Code:
Sub DateiInformationen_auslesen()
Dim fso       As Object
Dim ordner    As Object
Dim subordner As Variant
Dim file      As Variant
Dim i         As Integer
Const PFAD = "C:\Test"
i = 3
Set fso = CreateObject("Scripting.FileSystemObject")
Set ordner = fso.GetFolder(PFAD)
With ThisWorkbook.Worksheets("Auswertung")
.[A1].Select
.[A3:F10000].ClearContents
.[A1:B1] = Array("Pfad:", PFAD)
.[B2:F2] = Array("Name", "Datum", "Uhrzeit", "Benutzer", "Ordner")
.[C:C].NumberFormat = "dd.mm.yyyy"
.[D:D].NumberFormat = "hh:mm:ss"
For Each file In ordner.Files
.Cells(i, 2) = file.Name
.Cells(i, 3) = DateValue(file.DateLastModified)
.Cells(i, 4) = TimeValue(file.DateLastModified)
.Cells(i, 5) = Application.username
i = i + 1
Next
End With
End Sub

Anzeige
AW: Dateiinformationen vieler txt Dateien auslesen
05.06.2019 13:23:43
Nepumuk
Hallo Simy,
der "Besitzer" ist immer der Rechner auf dem sich die Datei befindet. Sprich wenn sich die Dateien auf deinem Rechner befinden dann ist dein Rechner (bei mir OKTOPUS) und du (bei mir Gepard) der Besitzer.
Das bringt dich also nicht weiter. Wie schon geschrieben, es gibt bei .txt - Dateien dazu keine Möglichkeit. Schau einfach selbst mal in die Eigenschaften der Dateien.
Gruß
Nepumuk
Anzeige
AW: Dateiinformationen vieler txt Dateien auslesen
05.06.2019 13:35:30
Simy
Hallo Nepumuk,
die txt-Dateien die jeder Kollege automatisch im Hintergrund erzeugt werden auf einem Server zentral gespeichert. Auf dem Server werden in einem Ordner die ganzen txt-Dateien gesammelt. Wenn ich jetzt die einzelnen txt-Dateien mit der rechten Maustaste anklicke und über Eigenschaften/Details gehe, sehe ich bei "Besitzer" immer die individuelle Kennung der einzelnen Kollegen. Die will ich auslesen.
Daher muss bei der Speicherung der txt-Datei doch irgendwo diese "Besitzer"-Information abgespeichert werden, oder?
Sorry...vielleicht verstehe ich das Problem auch einfach nicht :-))))
Grüße
Anzeige
AW: Dateiinformationen vieler txt Dateien auslesen
05.06.2019 13:39:05
peterk
Hallo
Füg folgende Funktion ein:

Function GetFileOwner(fileDir As String, fileName As String) As String
Dim securityUtility As Object
Dim securityDescriptor As Object
Set securityUtility = CreateObject("ADsSecurityUtility")
Set securityDescriptor = securityUtility.GetSecurityDescriptor(fileDir & fileName, 1, 1)
GetFileOwner = securityDescriptor.Owner
End Function

Folgende Änderungen in deinem Code:

Const PFAD = "C:\Test\"   statt Const PFAD = "C:\Test"


.Cells(i, 5) = GetFileOwner(PFAD, file.Name)

Anzeige
AW: Dateiinformationen vieler txt Dateien auslesen
05.06.2019 15:13:51
Simy
Hallo Peter,
funktioniert perfekt :-)). Vielen Dank!
Vielen Dank auch an Nepumuk und den Rest - ihr seid spitze!
AW: NameSpace
05.06.2019 14:00:38
Fennek
aus dem Archiv:

Sub Datei_Attribute()
Pt_Fl = Application.GetOpenFilename()
Fl = Dir(Pt_Fl)
Pt = Replace(Pt_Fl, Fl, "")
With CreateObject("shell.application").Namespace(Pt)
For i = 0 To 350 ' "" Then Debug.Print i, .getDetailsOf(Fl, i), Tx
Next i
End With
Beep
End Sub
mfg
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Dateiinformationen aus .txt-Dateien in Excel auslesen


Schritt-für-Schritt-Anleitung

Um die Dateiinformationen vieler .txt-Dateien auszulesen und in Excel anzuzeigen, kannst Du folgendes VBA-Makro verwenden:

  1. Öffne Excel und gehe zu Entwicklertools > Visual Basic.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub DateiInformationen_auslesen()
    Dim fso       As Object
    Dim ordner    As Object
    Dim file      As Variant
    Dim i         As Integer
    Const PFAD = "C:\Test\"
    i = 3
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ordner = fso.GetFolder(PFAD)
    With ThisWorkbook.Worksheets("Auswertung")
        .[A1].Select
        .[A3:F10000].ClearContents
        .[A1:B1] = Array("Pfad:", PFAD)
        .[B2:F2] = Array("Name", "Datum", "Uhrzeit", "Benutzer", "Ordner")
        .[C:C].NumberFormat = "dd.mm.yyyy"
        .[D:D].NumberFormat = "hh:mm:ss"
        For Each file In ordner.Files
            If Right(file.Name, 4) = ".txt" Then
                .Cells(i, 2) = file.Name
                .Cells(i, 3) = DateValue(file.DateLastModified)
                .Cells(i, 4) = TimeValue(file.DateLastModified)
                .Cells(i, 5) = GetFileOwner(PFAD, file.Name)
                i = i + 1
            End If
        Next
    End With
End Sub

Function GetFileOwner(fileDir As String, fileName As String) As String
    Dim securityUtility As Object
    Dim securityDescriptor As Object
    Set securityUtility = CreateObject("ADsSecurityUtility")
    Set securityDescriptor = securityUtility.GetSecurityDescriptor(fileDir & fileName, 1, 1)
    GetFileOwner = securityDescriptor.Owner
End Function
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Füge ein neues Arbeitsblatt mit dem Namen „Auswertung“ hinzu.
  3. Führe das Makro aus und Du wirst die Dateiinformationen (Erstellungsdatum und Ersteller) der .txt-Dateien in der Tabelle sehen.

Häufige Fehler und Lösungen

  • Fehler beim Auslesen des Erstellers: Stelle sicher, dass die .txt-Dateien sich auf einem NTFS-formatieren Laufwerk befinden, da nur dort die Sicherheitsinformationen gespeichert werden.

  • Leere Zellen in der Ausgabe: Überprüfe, ob der Pfad zu den .txt-Dateien korrekt ist und ob die Dateien die Endung .txt haben.

  • Makro funktioniert nicht: Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen und aktiviere die entsprechenden Optionen.


Alternative Methoden

Falls Du die Informationen nicht mit VBA auslesen möchtest, kannst Du auch PowerShell verwenden. Hier ein Beispielbefehl, um die Erstellungsdaten und Besitzer von .txt-Dateien anzuzeigen:

Get-ChildItem "C:\Test\*.txt" | Select-Object Name, CreationTime, @{Name="Owner";Expression={(Get-Acl $_.FullName).Owner}}

Diese Methode zeigt die Informationen direkt in der PowerShell-Konsole an.


Praktische Beispiele

Angenommen, Du hast mehrere .txt-Dateien im Ordner C:\Test. Nach dem Ausführen des Makros solltest Du eine Tabelle erhalten, die etwa so aussieht:

Name Datum Uhrzeit Benutzer Ordner
Datei1.txt 01.01.2023 12:00 Kollege A C:\Test
Datei2.txt 02.01.2023 13:00 Kollege B C:\Test

Mit diesem Makro kannst Du die .txt-Dateien lesen und die gewünschten Informationen effizient in Excel anzeigen lassen.


Tipps für Profis

  • Filter nutzen: Nutze die Filterfunktion in Excel, um die angezeigten .txt-Dateien nach Erstellungsdatum oder Benutzer zu sortieren.

  • Fehlerbehandlung einbauen: Implementiere Fehlerbehandlungsroutinen in Deinem VBA-Code, um unerwartete Fehler abzufangen und zu protokollieren.

  • Weitere Dateiinformationen auslesen: Du kannst den Code erweitern, um zusätzliche Dateiattribute wie Größe oder Dateipfad auszulesen.


FAQ: Häufige Fragen

1. Kann ich auch andere Dateiformate auslesen? Ja, Du kannst das Makro anpassen, um Informationen von anderen Dateiformaten auszulesen, indem Du die Dateiendung in der If-Bedingung änderst.

2. Wie finde ich heraus, welcher Benutzer eine .txt-Datei erstellt hat? Mit der Funktion GetFileOwner im VBA-Code kannst Du den Ersteller einer Datei herausfinden, sofern die Datei auf einem NTFS-Laufwerk gespeichert ist.

3. Welche Excel-Version benötige ich für das Makro? Das Makro sollte in den meisten modernen Excel-Versionen (ab Excel 2010) funktionieren. Achte darauf, dass Makros aktiviert sind.

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