Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
516to520
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
516to520
516to520
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Rekursives "DIR" per VBA

Rekursives "DIR" per VBA
18.11.2004 15:13:21
Lonni
Hallo Cracks...
bei folgendem Code steigt VBA leider aus, wenn er aus dem ersten Verzeichnis eine Stufe zurückspringt... Sinn des ganzen ist einfach die Verzeichnisstruktur eines Pfades darzustellen.
Dim stufe As Byte
Dim found As Long


Sub start()
startpfad = "c:\docs\"
stufe = 0
found = 0
Call testitforme((startpfad))
End Sub


Sub testitforme(a As String)
stufe = stufe + 1
datei = Dir(a & "*.*", 16)
While datei <> ""
If GetAttr(a & datei) = vbDirectory And (datei <> "." And datei <> "..") Then
found = found + 1
Cells(found, stufe) = datei
Call testitforme((a & datei & "\"))
Else
found = found + 1
Cells(found, stufe) = datei
End If
datei = Dir
Wend
stufe = stufe - 1
End Sub


Wie gesagt... bei Rückkehr aus dem 1. Verzeichnis steigt er bei datei = Dir aus... wahrscheinlich blickt er nicht mehr wo er sich gerade befindet :-)
Wie kann ich das regeln?
Danke für Ideen!
Gruß Lonni

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rekursives "DIR" per VBA
18.11.2004 18:49:31
Volker
Hallo Lonni,
auch ohne ganz durchzusteigen, was Du da treibst:
Durch den rekursiven Aufruf deiner

Sub kehrt das Programm nach end 

Sub wieder
an die Stelle datei=dir zurück.
Vielleicht musst du da vorher den Wert von Stufe abfragen und bei Werten unter 2 (oder 1)
abbrechen.
Noch ein Tip: was Du vorhast, erledigen div. Freeware-Tool ganz gut.
Google doch mal nach "dirprinter" oder schau auf auf freeware.de nach.
Gruß
Volker

AW: Rekursives "DIR" per VBA
19.11.2004 16:29:10
Lonni
Hallo Volker,
das DIR-Problem ist nur die vorstufe zu dem was ich eigentlich vorhabe...
Das Problem ist wohl, dass der aufruf mit datei = dir immer die nachfolgenden Dateien in einem Verzeichnis aufruft. Springe ich jedoch eine "Stufe" tiefer und kehre dann zurück weiss die Prozedur von dem 1. Durchlauf nicht mehr wo sie war... der zweite Durchlauf hat das wahrscheinlich überschrieben... Die Frage ist nun: kann ich irgendwie speichern wo ich mit dem 1. DIR-Befehl war???
Gruß Lonni
Anzeige
AW: Rekursives "DIR" per VBA
20.11.2004 10:52:43
andre
Hallo Lonni,
Dein Makro scheint auch nur bei einem Verzeichnis alles was da ist aufzulisten. Bei Unterverzeichnissen fehlen Dateien in der Liste vom Ausgangsverzeichnis und am Ende kommt der Fehler. Warum weiss ich auch nicht, mit
On Error GoTo ende
datei = Dir
Wend
stufe = stufe - 1
ende:
End Sub
komms Du zwar weiter, aber die Fehlenden fehlen immer noch :-(. Schönes Deutsch.
Warum das so ist weiß ich auch nicht. In der Überwachung habe ich das Dir angeschaut und im Einzelschritt laufen lassen, da kommt bei jedem Schritt ein anderer Inhalt. Am Ende ist das Dir dann leer, je nach Anzahl der Files schon einige Zeilen über dem datei=Dir. Da kommt es dann zum Fehler.
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige