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

Forumthread: Pfad, Dateiname und Dateigröße auslesen

Pfad, Dateiname und Dateigröße auslesen
21.04.2006 10:51:46
Basch
Hallo an alle,
ich habe im Archiv folgendes Makro zum Auslesen von Dateiname, Pfad, Datum usw. gefunden. Leider brauche ich auch die Dateigröße. Kann mir einer das Makro anpassen?
Schon mal vielen Dank und Gruß von Bastian

Sub Alter()
Dim TB, Pfad$, Ext$, i&, Jahr%, Z&
Set TB = Sheets("Tabelle2")
Pfad = "G:\DAT\Prj\32_Elbquerung_A20\07 Planungsgrundlagen\75 Pl-Grdl_ Straßenpl-OPB\Leitungsanfrage\" 'anpassen
Ext = "*.*"
Z = 1
Jahr = InputBox("Welches Jahr", , Year(Date))
With Application.FileSearch
.NewSearch
.LookIn = Pfad
.SearchSubFolders = True 'auch die Unterverzeichnisse
.Filename = Ext
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
.Execute
For i = 1 To .FoundFiles.Count
If Year(FileDateTime(.FoundFiles(i))) = Jahr Then
Z = Z + 1
TB.Cells(Z, 1) = FileDateTime(.FoundFiles(i)) 'Datum
TB.Cells(Z, 1).NumberFormat = "DD/MM/YYYY" 'Datum formatieren
'Link erzeugen******
ActiveSheet.Hyperlinks.Add Anchor:=TB.Cells(Z, 2), _
Address:=.FoundFiles(i), TextToDisplay:=Dir(.FoundFiles(i))
'Pfad eintragen******
TB.Cells(Z, 3) = Left(.FoundFiles(i), Len(.FoundFiles(i)) - Len(Dir(.FoundFiles(i))))
'Dateiart******
TB.Cells(Z, 4) = Right(.FoundFiles(i), 3)
End If
Next i
End With
'******Sortieren********
'    TB.Columns("A:C").Sort Key1:=TB.Range("A2"), Order1:=xlDescending, Header:=xlGuess, _
'        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
'        DataOption1:=xlSortNormal
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktioniert leider nicht
21.04.2006 11:49:04
Basch
Hallo Soleiman,
vielen Dank für Deine Antwort. Den Link kannte ich auch noch nicht.
Leider funktioniert das Makro nicht. In der zweiten Sub in der ersten Zeile hakt es. Weißt Du oder jemand woran es liegt.
Gruß, Bastian
AW: Verweise setzen ...
21.04.2006 13:47:29
Solaiman
Hallo Bastian,
bevor du den Script asführen kannst, mußt du in der VBA-Umgebung unter Extras-Verweise
den Verweis auf die Microsoft Scripting Runtime (SCRRUN.DLL) setzen!
Die DLL ist unter "C:\WINDOWS\system32\scrrun.dll" zu finden!
Gruß
Solaiman
Anzeige
AW: Verweise setzen ...
21.04.2006 14:10:47
Basch
Hallo Solaiman,
das ist ein toller Code. Vielen Dank für die Hilfe und schönes Wochenende.
Bastian
AW: danke für die Rückmeldung!
21.04.2006 14:16:01
Solaiman
Hallo Bastian,
gern geschehen ;-) und danke für die Rückmeldung!
Schönes Wochenende
Gruß
Solaiman
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Pfad, Dateiname und Dateigröße auslesen in Excel


Schritt-für-Schritt-Anleitung

Um den Pfad, Dateinamen und die Dateigröße in Excel auszulesen, kannst du das folgende VBA-Makro verwenden. Stelle sicher, dass du den Verweis auf die Microsoft Scripting Runtime gesetzt hast. Hier ist der angepasste Code:

Sub Alter()
    Dim TB As Worksheet
    Dim Pfad As String, Ext As String
    Dim i As Long, Z As Long, Jahr As Integer
    Dim fso As Object, Datei As Object

    Set TB = Sheets("Tabelle2")
    Pfad = "G:\DAT\Prj\32_Elbquerung_A20\07 Planungsgrundlagen\75 Pl-Grdl_ Straßenpl-OPB\Leitungsanfrage\" 'anpassen
    Ext = "*.*"
    Z = 1
    Jahr = InputBox("Welches Jahr", , Year(Date))

    ' Scripting.FileSystemObject verwenden
    Set fso = CreateObject("Scripting.FileSystemObject")

    For Each Datei In fso.GetFolder(Pfad).Files
        If Year(Datei.DateCreated) = Jahr Then
            Z = Z + 1
            TB.Cells(Z, 1) = Datei.DateCreated ' Datum
            TB.Cells(Z, 1).NumberFormat = "DD/MM/YYYY" ' Datum formatieren

            ' Link erzeugen
            ActiveSheet.Hyperlinks.Add Anchor:=TB.Cells(Z, 2), _
            Address:=Datei.Path, TextToDisplay:=Datei.Name

            ' Pfad eintragen
            TB.Cells(Z, 3) = fso.GetParentFolderName(Datei.Path)

            ' Dateiart und Größe
            TB.Cells(Z, 4) = Right(Datei.Name, Len(Datei.Name) - InStrRev(Datei.Name, "."))
            TB.Cells(Z, 5) = Datei.Size ' Dateigröße in Bytes
        End If
    Next Datei
End Sub

Dieses Makro durchsucht den angegebenen Pfad und listet alle Dateien auf, die im angegebenen Jahr erstellt wurden. Dabei werden Datum, Dateiname, Pfad, Dateiart und Dateigröße in Excel ausgegeben.


Häufige Fehler und Lösungen

  • Fehler: "Komponente nicht gefunden"
    Lösung: Stelle sicher, dass der Verweis auf die Microsoft Scripting Runtime in der VBA-Umgebung unter Extras > Verweise gesetzt ist.

  • Fehler: "Pfad nicht gefunden"
    Lösung: Überprüfe, ob der angegebene Pfad korrekt ist und existiert.


Alternative Methoden

Eine alternative Methode zum Auslesen von Dateiinformationen ist die Verwendung von Power Query. Hier kannst du über die Daten abrufen-Option eine Verbindung zu einem Ordner herstellen und die benötigten Informationen importieren. Diese Methode ist besonders nützlich, wenn du eine grafische Oberfläche bevorzugst.


Praktische Beispiele

  1. Beispiel für einen spezifischen Ordner
    Angenommen, du möchtest alle .xlsx Dateien in einem bestimmten Ordner auslesen. Ändere die Ext Variable im obigen Makro wie folgt:

    Ext = "*.xlsx"
  2. Einfügen von Informationen in eine andere Tabelle
    Wenn du die Informationen in eine andere Tabelle als "Tabelle2" einfügen möchtest, ändere die Zeile:

    Set TB = Sheets("DeineTabelle")

Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um die Bildschirmaktualisierung während des Makro-Laufs zu deaktivieren. Dadurch läuft das Makro schneller.

  • Implementiere Fehlerbehandlungsroutinen, um das Makro robuster zu machen. Zum Beispiel:

    On Error Resume Next

FAQ: Häufige Fragen

1. Wie kann ich die Dateigröße in einem anderen Format anzeigen?
Du kannst die Dateigröße in KB oder MB umrechnen, indem du die Größe durch 1024 (für KB) oder 1048576 (für MB) teilst. Zum Beispiel:

TB.Cells(Z, 5) = Datei.Size / 1024 ' Größe in KB

2. Kann ich das Makro für Unterordner anpassen?
Ja, du kannst die Methode GetFolder verwenden, um auch Unterordner zu durchsuchen. Du müsstest die Schleife entsprechend anpassen und rekursiv aufrufen.

3. Funktioniert das Makro mit Excel 2016?
Ja, das Makro sollte in Excel 2016 und neueren Versionen problemlos funktionieren.

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