Strukturierte Dateiliste mittels VB nach Excel

  • VB6

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von maxpd.

    Strukturierte Dateiliste mittels VB nach Excel

    Hallo,

    ich habe folgendes Vorhaben:

    Ich habe ein Tool mit einer GUI in Visual Basic 2010 erstellt. In diesem Tool möchte ich nun zusätzlich folgende Funktion integrieren:
    Auslesen eines gesamten Ordners mit Unterordnern und Dateien.
    • Sortierung der Dateien nach Thema in einer Baumstruktur: Dateien mit den Buchstaben "AA" im Namen sind getrennt von Dateien mit den Buchstaben "BB" und absteigend nach Version aufzulisten. Diese Dateien können über verschiedene Ordner verstreut sein.
    • Die neueste Version fett markieren.
    • Die Dateien mit einem Hyperlink versehen.
    • Darstellung in einer druckbaren Form, präferiert Excel 2010 / 2013.
    • Kür: Auswahl ob man eben die gewünschte Ansicht oder doch die gegebene Explorerstruktur abbilden möchte.

    Spalte 1
    Spalte 2
    Spalte 3
    AA
    AA V2.txt
    Ablageordner (ohne Pfad)

    AA V1.txt

    Ablageordner (ohne Pfad)
    BB
    BB V1.txt

    Ablageordner (ohne Pfad)

    ...
    ...

    Möglicherweise habt Ihr Tipps für mich :)

    Gruß
    maxpd

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „maxpd“ ()

    Hi ErfinderDesRades :D

    danke für die Schlagworte. Hast du an dieser Stelle schon bestimmte Tutorials im Hinterkopf, denn noch handelt es sich bei allem um Böhmische Dörfer für mich.
    Ansonsten mach ich mich quer Beet durch Google auf die Suche.
    ja, das sind mehrere Baustellen.
    ein Verzeichnis komplett auslesen kann man am einfachsten mit DirectoryInfo.GetFiles(,,includesubdirectories:=True) - guck die richtige Syntax selbst nach im ObjectBrowser
    Ein typDataset anzulegen wird in vier Views-Videos gezeigt - da sind auch Filme dabei (und nat. Codesamples), die die typisierten Add-Methoden demonstrieren.

    Aber man muss halt bisserl proggen können, also etwa den OB zu nutzen verstehen, um DirectoryInfo richtig zu verwenden, und um die entsprechenden Properties der FileInfos abrufen zu können.
    Und nochmal muss man den OB beherrschen, um die Syntax der typisierten Add-Methoden der typisierten DataTable zu verstehen.
    Ich habe mich mal etwas schlau gemacht. Datasets scheinen eine Möglichkeit zu sein. Aber sind sie auch die einzige Möglichkeit? Ansonsten muss ich doch tiefer in die Dataset Materie :(

    Was ich bisher habe, was aber wahrscheinlich einen falschen Ansatz verfolgt?! Zumindest funktioniert der Code soweit :D

    Visual Basic-Quellcode

    1. Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
    2. Dim Explorerpfad = "C:\Users\hans\Desktop\"
    3. If CheckBox1.Checked = True Then
    4. Dim excel = CreateObject("Excel.Application")
    5. Dim excel_wb = excel.workbooks.add
    6. Dim sheet = excel_wb.activesheet
    7. excel.Visible = True
    8. For Each founddirectory As String In
    9. My.Computer.FileSystem.GetDirectories(
    10. Explorerpfad,
    11. FileIO.SearchOption.SearchAllSubDirectories,
    12. "*" & Projekt & "*")
    13. Dim suchtext As String = String.Format("*" & "AA" & "*")
    14. Dim dateiliste = My.Computer.FileSystem.GetFiles(
    15. founddirectory2, FileIO.SearchOption.SearchAllSubDirectories, suchtext)
    16. Dim dateinamenfolge = From datei In dateiliste _
    17. Let dateiname = My.Computer.FileSystem.GetName(datei) _
    18. Order By dateiname Descending _
    19. Select Datei
    20. Dim neuestedatei = dateinamenfolge.First
    21. Dim neuestedateiversion = Microsoft.VisualBasic.Right(IO.Path.GetFileNameWithoutExtension(neuestedatei), 1) + 1
    22. sheet.cells(1, "c") = neuestedatei
    23. Next
    24. End If
    25. End Sub

    ups - hab ich überlesen, dass du nach Excel exportieren willst.
    Also wenn du in VB keine Anzeige brauchst, dann kannste zur not die Datasetterei auch weglassen.
    Nur empfehle ich dir noch einmal den ObjectBrowser, und auch die DirectoryInfo- und FileInfo- Klassen.
    Die enthalten alle Informationen, die du brauchst.
    Verwende nicht My.Computer.FileSystem.GetDirectories() oder My.Computer.FileSystem.GetFiles(), denn die geben dir nur dumme Strings zurück.
    Guck nochma das OB-Tut, da wird ja auch mit FileInfo umgegangen, und Directory- und File-Info werden da ja auch grad beispielhaft im OB untersucht.