VBA Problem in Excel

  • Hallo Cracks,


    ich hab da ein Problem.

    Nehmen wir ein Laufwerk an, auf dem im Ordner 2020 jeweils Monatsordner sind.

    In jedem Monatsordner ist ein Ordner erledigt.

    Vom Ordner 2020 aus gesehen 2 Unterordner.

    Folgendes Script durchsucht ab 2020 alle Unterordner und gib die namen der Dateien aus.

    Ich will aber nicht alle Unterordener, sondern erledigt soll ausgeschlossen werden:


    Dim Pfad1, Name1, Anzahl, X, X0, X1, X2, Verz, Anzverz, Größe

    Dim TB1, TB2 As Worksheet

    Dim msg As String

    Set TB1 = Tabelle7

    Set TB2 = Tabelle8

    Start = Now

    TB1.[a:D] = ""

    TB2.[a:D] = ""

    'überflüssige Tabellenblätter löschen

    'If ThisWorkbook.Worksheets.Count > 2 Then

    'Application.DisplayAlerts = False

    'For X = 3 To ThisWorkbook.Worksheets.Count

    'ThisWorkbook.Worksheets(3).Delete

    'Next X

    'Application.DisplayAlerts = True

    'End If


    ' Pfad abfragen


    Pfad1 = ("O:\Spedition\Spedition\Admin\Temporär\FREIGABE zur Abrechnung Hilden")

    If Pfad1 = "" Then Exit Sub

    Name1 = Dir(Pfad1, vbDirectory) ' Ersten Eintrag abrufen.

    TB1.[a2] = Pfad1

    Anzahl = 2

    TB1.[a1] = "Pfad"

    TB1.[b1] = "UnterVerz."

    TB1.[c1] = "Anz. Dateien"

    TB1.[d1] = "Datgröße in Verz."

    X0 = 2

    X1 = 2

    Do While TB1.Cells(Rows.Count, 1).End(xlUp).Row <> TB1.Cells(Rows.Count, 2).End(xlUp).Row

    For X2 = X0 To X1


    Pfad1 = TB1.Cells(X2, 1) ' Pfad setzen.

    If Right(Pfad1, 1) <> "\" Then Pfad1 = Pfad1 & "\"

    Name1 = Dir(Pfad1, vbDirectory) ' Ersten Eintrag abrufen.

    Verz = 0

    Do While Name1 <> "erledigt" ' Schleife beginnen.

    ' Aktuelles und übergeordnetes Verzeichnis ignorieren.

    If Name1 <> "." And Name1 <> ".." Then

    ' Mit bit-weisem Vergleich sicherstellen, daß Name1 ein

    ' Verzeichnis ist.

    If (GetAttr(Pfad1 & Name1) And vbDirectory) = vbDirectory Then

    Anzahl = Anzahl + 1

    TB1.Cells(Anzahl, 1) = Pfad1 & Name1 & "\"

    Verz = Verz + 1

    'Eintrag nur anzeigen, wenn es sich um ein Verzeichnis handelt.

    End If

    End If

    Name1 = Dir ' Nächsten Eintrag abrufen.

    Loop

    TB1.Cells(X2, 2) = Verz

    Next X2

    X0 = X1 + 1

    X1 = X2

    Loop


    Wenn ich bei Do While erledigt ausschließe, läuft die Prozedur auf Laufzeitfehler 5.


    Hat jemand eine Idee, wich ich die Unterordner anders ausschließe?


    Ich weiß, etwas spezifische Frage, aber ich grübel da jetzt schon länger drüber!


    Danke und ein schöne WE


    Thorsten


    PS: das ist nur ein Auszug aus dem Code

    Deshalb wird man ja auch nirgends aus der Kneipe geschmissen. Wer dort andere Gäste aber dauerhaft und ständig nervt muss irl. mit paar aufs Maul rechnen. Hier geht das ja leider kaum aufgrund der Entfernung

  • Hi,


    mit dem Do While Name1 <> "erledigt" bricht die Schleife ab sobald er auf das "erledigt" stößt und liest keine weiteren Dateieinträge mehr -- ist das so gewollt?


    Oder soll einfach der "erledigt"-Eintrag übersprungen und dann mit dem nächsten fortgesetzt werden? Dann könntest das "erledigt" an der gleichen Stelle abfragen wie auch schon die "." und ".."

    Gruß Mathias (formerly known as Mathias386)


    Für einen Fahrzeugtyp, wie ihn der BMW 7er und seine nationalen wie internationalen Wettbewerber darstellen, sind rund 135 kW (gut 185 PS) angemessen und selbst bei sportlichsten Ansprüchen mehr als ca. 185 kW (rund 250 PS) nicht erforderlich.

    (aus einem BMW-Prospekt von 1980, gefunden bei www.7-forum.com)

  • Hi,


    der Hammer, da sieht man manchmal den Wald vor lauer Bäumen nicht.

    Ich weiß zwar immer noch nicht, warum das "Do While" auf Laufzeitfehler 5

    stößt und nicht einfach abbricht, aber mit Deinem Hinweis läuft es 100% wie gewollt!!!!


    Danke, Danke, Danke.............



    Gruß


    Thorsten

    Deshalb wird man ja auch nirgends aus der Kneipe geschmissen. Wer dort andere Gäste aber dauerhaft und ständig nervt muss irl. mit paar aufs Maul rechnen. Hier geht das ja leider kaum aufgrund der Entfernung