Dateiliste im Excel erstellen

  • #1
O

Oktavia

Bekanntes Mitglied
Themenersteller
Dabei seit
04.04.2004
Beiträge
67
Reaktionspunkte
0
Ich habe einen Ordner mit ca. 500 Dateien. Nun muss ich davon eine druckfähige Liste (möglichst mit Excel) erstellen. wie stelle ich das , mit möglichst wenig Tipparbeit, an?

Vielen Dank im voraus
Oktavia
 
  • #2
Hi Oktavia,

Du könntest z.B. den unten aufgefühten Makro benutzen ;D

Makro zum Auflisten der Files eines Directories

Die Ausgabe erfolgt in einem neu angelegten Blatt
a) mit Auswahl des Pfades
b) mit Abfrage des Filters für Dateinamen (z.B. *.TXT)
c) mit Auswahl Ausgabe mit komplettem Pfad oder nur Dateiname
d) der Dateiname des aktuellen Dokumentes wird in der Ausgabe unterdrückt

Gruß Matjes ;)

Code:
Option Explicit
' Typdeklaration für API-Dialog->Verzeichnis auswählen'
    Private Type BrowseInfo
        hOwner          As Long
        pidlRoot        As Long
        pszDisplayName  As String
        lpszTitle       As String
        ulFlags         As Long
        lpfn            As Long
        lParam          As Long
        iImage          As Long
    End Type

    Private Declare Function SHGetPathFromIDList Lib shell32.dll (ByVal pidl As Long, ByVal pszPath As String) As Long
    Private Declare Function SHBrowseForFolder Lib shell32.dll (lpBrowseInfo As BrowseInfo) As Long

' Ermittelt Verzeichnisnamen und zeigt Windows-Dialog an
Public Function VerzeichnisWählen(Optional DialogTitel) As String
    Dim StrukturVerzeichnisInfo As BrowseInfo, ListenNr As Long, Pfad As String
    Dim hWndAccessApp As Long
  
    With StrukturVerzeichnisInfo
        .hOwner = hWndAccessApp
        .lpszTitle = IIf(IsMissing(DialogTitel), Verzeichnispfad auswählen, CStr(DialogTitel))
        .ulFlags = &H1-> BIF_RETURNONLYFSDIRS
    End With
    
    ListenNr = SHBrowseForFolder(StrukturVerzeichnisInfo)
    Pfad = Space$(512)
    
    If SHGetPathFromIDList(ByVal ListenNr, ByVal Pfad) Then VerzeichnisWählen = Left(Pfad, InStr(Pfad, vbNullChar) - 1)
    
End Function



Public Sub FilesAusVerzeichnisInTabellenblatt()
'Makro zum Auflisten der Files eines Directories

'Die Ausgabe erfolgt in einem neu angelegten Blatt

'a) mit Auswahl des Pfades
'b) mit Abfrage des Filters für Dateinamen (z.B. ATI*.SYS)
'c) mit Auswahl Ausgabe mit komplettem Pfad oder nur Dateiname
'd) der Dateiname des aktuellen Dokumentes wird in der Ausgabe unterdrückt

Dim ws As Worksheet
Dim fs As FileSearch
Dim i As Long, z As Long
Dim sPath As String, sname As String, s_tmp As String, sSuchpfad As String, sFilename As String
Dim b_mitPfadangabe  ->True= Dokument mit Pfadangabe , false=ohne
Dim ret As Integer

 -> Auswahl des Pfades
  sSuchpfad = VerzeichnisWählen(Bitte wählen Sie das Verzeichnis)

  If sSuchpfad =  Then
    ret = MsgBox(Es wurde kein Suchpfad eingegeben ! & vbCrLf & Der Makro wird beendet., _
            vbOKOnly + vbInformation, Kein Suchpfad ausgewählt)
  Else
    
   ->Wahl: Ausgabe mit Pfadnamen oder ohne
    ret = MsgBox(Wollen Sie die Ausgabe der Filenamen mit komplettem Pfad ?, _
          vbQuestion + vbYesNo, Auswahl Pfad: komplett <> nur filename)
    If ret = vbYes Then
      b_mitPfadangabe = True
    Else
      b_mitPfadangabe = False
    End If

   ->Wahl: Filename
    sFilename = InputBox(Geben Sie bitte den Filter für Filenamen ein !, Eingabe Filter Filname, *.xls)
    If sFilename =  Then sFilename = *.*

    sPath = ActiveWorkbook.Path->Pfad des Dokuments
    sname = ActiveWorkbook.Name->Name des Dokuments
      
   ->neues Blatt anlegen
    Worksheets.Add After:=Worksheets(Worksheets.Count)
    Set ws = Worksheets(Worksheets.Count)
   ->Zeilenzähler für nächsten Eintrag initialisieren
    z = 1
   ->Überschrift
    ws.Cells(z, 1).Value = folgende Dokumente befinden sich im Pfad  & sSuchpfad
    ws.Cells(z, 1).Font.Bold = True
    z = z + 2->Zeilenzaehler für naechsten Eintrag erhöhen
     
    ws.Cells(z, 1).Value = Filenamen
    ws.Cells(z, 1).Font.Bold = True
    z = z + 1->Zeilenzaehler für naechsten Eintrag erhöhen
     
   ->Filenamen aus dem Directory sPath auflisten
     Set fs = Application.FileSearch
     
     With fs
        .NewSearch
        .LookIn = sSuchpfad
        .FileName = sFilename
        i = .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending)
        If .FoundFiles.Count > 0 Then
          For i = 1 To .FoundFiles.Count
            If .FoundFiles(i) <> (sPath & \ & sname) Then->nicht dieses Dokument
              s_tmp = .FoundFiles(i)
              If b_mitPfadangabe Then
                ws.Cells(z, 1).Value = s_tmp->mit Pfad
              Else
                ws.Cells(z, 1).Value = NurFilenamen(s_tmp)->ohne Pfad
              End If
              z = z + 1->Zeilenzaehler für naechsten Eintrag erhöhen
            End If
          Next i
        Else
          ws.Cells(z, 1).Value = kein File vorhanden !!!
          MsgBox Keine Dokumente gefunden
        End If
     End With
     ws.Columns(1).AutoFit
  End If
End Sub
Private Function NurFilenamen(s_vollstaendigerFilename As String) As String
'schneidet die Pfadangaben aus einem String und gibt den Filenamen zurueck
Dim p1 As Integer, p2 As Integer

  p2 = 0: p1 = 0
  Do
    p1 = InStr(p1 + 1, s_vollstaendigerFilename, \)
    If p1 <> 0 Then p2 = p1
  Loop While p1 <> 0
  NurFilenamen = Right(s_vollstaendigerFilename, Len(s_vollstaendigerFilename) - p2)
End Function
 
  • #3
Mmh, Ääähhh.... *stotter*
Schlimm, wenn ich jetzt nicht so wirklich weiss, was Du meinst?
Gibts vielleicht ne `verständlichere`Lösung?

LG Oktavia
 
  • #4
Hallo Oktavia,

so wie es scheint hast Du noch nie einen Excel-Makro benutzt/erstellt.

Dann hier die Kurzanleitung:
Code:
1) neu Excel-Datei öffnen
2) VB-Ediotr öffnen Alt+F11
Links siehst Du ein Fenster mit der Überschrift Projekt-VBA-Project.
In diesem Fenster ist die neue Arbeitsmappe unter dem Namen VBAProject(Mappe1) zu finden.
3) VBA-Modul anlegen mit
3a) VBAProject(Mappe1) mit der Maus selektieren
3b) rechte Maustaste -> Einfügen -> Modul
in der Mitte geht das Code-Fenster Mappe1-Modul1(Code) auf
4) den gesamten Code per copy und Paste in dieses Fenster hineinkopieren
5) VB-Editor schliessen mit Alt+Q
6) Excel-Datei speichern, z.B. als->Makro_Dateiliste.xls'

7) eine weiter neue Excel-Datei öffnen (Datei-Neu)
8) Makro FilesAusVerzeichnisInTabellenblatt aufrufen
a) mit Alt+F8 Makroauswahl öffnen
b) Doppelklick auf den Eintrag FilesAusVerzeichnisInTabellenblatt 

Jetzt läuft der Makro und fragt die optionen ab :-)

Für den Filter mußt Du *.* angeben, wenn du alle Dateien des ausgewählten Verzeichnisses auflisten willst.

Kannst es auch mehrere Male durchführen. Für jeden Durchgang wird ein neues Blatt angelegt.

9) Liste nach eigenen Wünschen formatieren und speichern.



Wenn du den Makro irgendwann einmal wieder brauchst, einfach die Datei Makro_Dateiliste.xls öffnen. Dort ist der Makro gespeichert.
So ich hoffe das reicht aus. Wenn nicht, einfach nochmal nachfragen.

Gruß Matjes :)
 
  • #5
Klasse!! Das erspart mir ne Menge Tiparbeit.
Ich hab grad mal nen Probelauf gestartet und das hingekriegt.
Dankeschön :D

Oktavia
 
Thema:

Dateiliste im Excel erstellen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.967
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben