Office: auch Unterordner berücksichtigen

Helfe beim Thema auch Unterordner berücksichtigen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Servus zusammen, mit folgendem Schnipsel durchsuche ich html-Files nach einen Begriff. Funktioniert soweit auch. Aber wie muss ich etwas... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von miksman, 21. Januar 2021.

  1. auch Unterordner berücksichtigen


    Servus zusammen,

    mit folgendem Schnipsel durchsuche ich html-Files nach einen Begriff. Funktioniert soweit auch.

    Aber wie muss ich etwas zusammenbasteln, damit der Code auch alle Unterordner einbezieht?

    Code:
    :)
     
    miksman, 21. Januar 2021
    #1
  2. Hallo,

    hier ist ein Modul mit einer Funktion, welche dir ein Array mit den gesuchten Dateinamen zurück gibt. Anschließend kann dieses Array in einer Schleife abgearbeitet werden.
    Anstatt die Dateien zeilenweise abzuarbeiten, wäre es sicherlich performanter, die Dateien in einen Buffer einzulesen, z.B. mit dem FileSystem-Objekt. und dann diesen zu durchsuchen.

    Gruß Ulrich

    modFileInfo.zip
     
    knobbi38, 23. Januar 2021
    #2
  3. Hallo,

    teste mal:

    Option Explicit

    Sub findWordinTXT()
    Dim sWord As String, FileName As String, InputData As String
    Dim AnzFound As Long
    Dim astrFolders() As String
    Dim ialngFolders As Long

    'Wort nach dem gesucht werden soll
    sWord = "Betreff"

    astrFolders = GetFolders("C:\Users\")

    For ialngFolders = LBound(astrFolders) To UBound(astrFolders)

    FileName = Dir$(astrFolders(ialngFolders) & "*" & "Message.html")

    Do Until FileName = vbNullString

    Open astrFolders(ialngFolders) & FileName For Input As #1

    Do Until EOF(1)

    Line Input #1, InputData

    If InStr(1, InputData, sWord) > 0 Then

    'Zeile mit Suchwort gefunden
    AnzFound = AnzFound + 1

    Worksheets("Tabelle1").Cells(AnzFound, 1).Value = FileName
    Worksheets("Tabelle1").Cells(AnzFound, 2).Value = InputData

    End If
    Loop

    Close #1

    'nächste Datei
    FileName = Dir$

    Loop
    Next
    End Sub

    Private Function GetFolders(ByVal pvstrPath As String) As String()
    Dim astrFolders() As String
    Dim strFolder As String, strPath As String
    Dim ialngIndex1 As Long, ialngIndex2 As Long
    Redim Preserve astrFolders(ialngIndex1)
    astrFolders(ialngIndex1) = pvstrPath
    ialngIndex1 = 1
    ialngIndex2 = 1
    strPath = pvstrPath
    Do
    strFolder = Dir$(PathName:=strPath & "*", Attributes:=vbDirectory)
    Do Until strFolder = vbNullString
    If strFolder <> "." And strFolder <> ".." Then
    If GetAttr(PathName:=strPath & strFolder) And vbDirectory Then
    Redim Preserve astrFolders(0 To ialngIndex1)
    astrFolders(ialngIndex1) = strPath & strFolder & ""
    ialngIndex1 = ialngIndex1 + 1
    End If
    End If
    strFolder = Dir$
    Loop
    If ialngIndex1 = ialngIndex2 Then Exit Do
    strPath = astrFolders(ialngIndex2)
    ialngIndex2 = ialngIndex2 + 1
    Loop
    GetFolders = astrFolders
    End Function
     
    Nepumuk, 23. Januar 2021
    #3
  4. auch Unterordner berücksichtigen

    Hallo,

    ich hätte da noch kleines Modul mit einer rekursionsfreien Variante auf DOS-Basis:

    Code:

    auch Unterordner berücksichtigen [​IMG]
    [+][-]
    ' VBA, XML, HTML => Forum-HTML, (c) 2018 by Volti (VBA) und haklesoft (VB)

     
    haklesoft, 23. Januar 2021
    #4
  5. Die Sortierung ist mit entsprechender Vorsicht zu genießen ...
    https://stackoverflow.com/questions/...s-is-specified
     
    Warkings, 23. Januar 2021
    #5
  6. Es geht ja nicht um eine Datumsfolge sondern lediglich um eine alphabetische Ordnung der Treffer (für die menschliche Anschauung) und die funktioniert bei mir. Bei der Frage des TE's spielt die Sortierung wohl ohnehin keine Rolle.
     
    Zuletzt von einem Moderator bearbeitet: 2. März 2021
    haklesoft, 23. Januar 2021
    #6
  7. \@haklesoft
    unabhängig davon muß man für so etwas nicht unbedingt die Kommandozeile bemühen.
    Für mich sieht das dann immer so aus, als ob der Programmier zu Faul ist, das selber auszuprogrammieren, oder es nicht besser kann.

    Gruß Ulrich
     
    knobbi38, 23. Januar 2021
    #7
  8. auch Unterordner berücksichtigen

    Richtig, für die Frage des TS spielt das keine Rolle. Hilft aber nicht, die Sortierung ist mit Vorsicht zu genießen.
     
    Zuletzt von einem Moderator bearbeitet: 2. März 2021
    Warkings, 23. Januar 2021
    #8
  9. \@Ulrich
    Das mit dem "faul" sehe ich gerade anders herum: die Entwickler von VB und VBA haben es versäumt, in der Sprache eine Methode zur Verfügung zu stellen, die der Leistungsfähigkeit des DOS-Dir entspricht; - insbesondere was die Auswertung tiefer Unterverzeichnisse angeht.

    Da finde ich es durchaus angebracht, auch in VBA mal DOS-Funktionen heranzuziehen, um das gewünschte Ergebnis auf einfachem Wege zu erhalten.

    In meinem persönlichen Baukasten gibts für den genannten Zweck aber auch noch API-Lösungen und rekursive Varianten mit Dir$ und FSO.
     
    haklesoft, 23. Januar 2021
    #9
  10. Hallo,

    sehe ich anders. Warum muss man eine eigene Lösung erstellen, wenn der WSH im FSO bereits alles mitbringt ? Das FSO hat doch auch ein SubFolder-Object. Eine kleine Rekursion ist doch da schnell eingebaut.

    Sabina
     
    Flotter Feger, 23. Januar 2021
    #10
  11. Hallo Sabina,

    FSO ist von allen Möglichkeiten die langsamste.
     
    Nepumuk, 23. Januar 2021
    #11
  12. kann ich bestätigen!

    Die cmd-Variante finde ich auf den ersten Blick gut, kurz getestet, super schnell. Ich bau das mal eben in WebDAV-Pfaden ein, da ich das dort nutzen möchte.

    Was ich nicht kannte: .PathSeparator
    Du fragst es explizit ab. Wo ist es relevant?
    Bei einer offen Mappe aus dem Web zeigts weiterhin \, anstelle von / an, wo ich eine Nutzungsmöglichkeit sah. Auf dem Mac?

    edit: Direkt Fenster Ausgabe:
    Code:
     
    Zuletzt von einem Moderator bearbeitet: 2. März 2021
  13. auch Unterordner berücksichtigen

    \@Ralf
    Applikation.PathSeparator wird hier nur wegen der Forumsmacke benutzt. Jeder lokal zulässige Pfadtrenner ist OK. Das Iff soll nur sicherstellen, dass am Ende des Pfades ein Trenner steht.

    @Sabina
    Für uns Helfer ist das natürlich schnell gemacht. Aber für die meisten Fragesteller schon ein Problem.
     
    haklesoft, 23. Januar 2021
    #13
  14. Das mit der Performance ist zwar richtig, aber andererseits nicht so dramatisch.

    Ich habe mal eben einen meiner USB Drives mit ~ 130 TSD Dateien in entspr. vielen Verzeichnissen gescannt, mit FSO und dem Dir Command. Und ja, FSO dauert wesentlich länger (also ca. 1min gegen 4min), aber bei üblichen Anwendungen wo ich Zugriff auf das Filesystem benötige spielt das keine Rolle. Ich würde nie, sorry, diesen SNB Code anwenden, der ist einfach unlesbar und hat Nebeneffekte.

    Und falls man Performance benötigt, sollte man das nicht mit Excel als Host für VBA machen.

    Kann man natürlich ...
    https://stackoverflow.com/questions/...lesystemobject
     
    Warkings, 23. Januar 2021
    #14
  15. Hallo,

    nur mal so zur Info:
    Ich habe mal versuchsweise gerade alle drei Lösungen ausprobiert, wobei ein Textdateiname griechische Unicode Zeichen (ΔΘλ.txt) enthielt.

    Lediglich die Version mit FSO kann damit umgehen. Die Dir-Version steigt dabei beim GetAttr aus und die DOS-Version liefert nur das ANSI-Äquivalent des Dateinamens, so das man diese nicht weiter verarbeiten könnte (mal abgesehen davon, daß das CMD Fenster kurz aufblendet).

    Und wie schon gesagt, der Geschwindigkeitsnachteil fällt nicht immer so ins Gewicht, weil normalerweise die Dateien weiterverarbeitet werden.

    Gruß Ulrich
     
    knobbi38, 23. Januar 2021
    #15
Thema:

auch Unterordner berücksichtigen

Die Seite wird geladen...
  1. auch Unterordner berücksichtigen - Similar Threads - Unterordner berücksichtigen

  2. Outlook Emails inkl. aller Unterordner pro Tag zählen/auswerten

    in Microsoft Outlook Hilfe
    Outlook Emails inkl. aller Unterordner pro Tag zählen/auswerten: Liebe Community, gibt es eine Möglichkeit in Outlook die an einem Tag erhaltenen Emails zu zählen? Da einige Emails aufgrund von erstellten Regeln in Unterordner verschoben werden und von dort aus...
  3. VBA Unterordner

    in Microsoft Excel Hilfe
    VBA Unterordner: Hallo zusammen, gibt es eine Möglichkeit im Formularordner von VBA Unterordner zu erstellen? Habe ein Bild angefügt, damit ihr wisst was ich meine. Gruß Honk
  4. Ordner mit Unterordner per VBA erstellen

    in Microsoft Access Hilfe
    Ordner mit Unterordner per VBA erstellen: Hallo Leute Ich möchte gerne Order incl. Unterordner per VBA erstellen. Die Namen der Ordner und Unterordner sind in einer Tabelle gespeichert. Mit nachfolgender Prozedur funktioniert es auch ganz...
  5. Posteingang Unterordner entfernen

    in Microsoft Outlook Hilfe
    Posteingang Unterordner entfernen: Guten Tag, in meinem Outlook Postfach "Posteingang" gibt es folgende Unterordner. Drafts, Sent, Trash, Spam. Diese lassen sich nicht als eigene Ordner extrahieren. Ist das Normal ? Im meine...
  6. Makros für die neueste Datei in Unterordner ausführen

    in Microsoft Excel Hilfe
    Makros für die neueste Datei in Unterordner ausführen: Hallo Liebes Forum, das hier ist mein erster Beitrag und ich hoffe Ihr könnt mir helfen. Ich habe mir ein Makros zusammengestrickt, welches bislang genau das tut was ich möchte: Eine Tabelle aus...
  7. Startverzeichnis und alle Unterordner nach bestimmten Dateityp durchsuchen

    in Microsoft Access Hilfe
    Startverzeichnis und alle Unterordner nach bestimmten Dateityp durchsuchen: Hallo zusammen, ich möchte in einem Startverzeichnis mit Hilfe von VBA automatisch alle Unterordner nach einem bestimmten Dateityp durchsuchen. Anschließend soll in eine Tabelle, welche die...
  8. MS Teams / SharePoint übergeordnete Ordner lassen sich nicht löschen, wenn Unterordner oder ...

    in Microsoft Teams Hilfe
    MS Teams / SharePoint übergeordnete Ordner lassen sich nicht löschen, wenn Unterordner oder ...: Hallo liebes Microsoft Team, ich müsste übergeordnete Ordner innerhalb von Kanälen löschen, die mehrere hunderte Unterdateien und Ordner haben. Selbst als Admin sagt mir jedoch Teams/SharePoint,...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden