Registriert seit: 01.02.2016
Version(en): 2010
Hallo,
vielleicht kann mir jemand von euch bitte mal erklären, wieso die Funktion Dir durch ein gegebenes Verzeichnis klettert.
Habe ich untenstehenden Code, wird mit debug.print strDatei im entsprechenden Vereichnis ein Dateiname nach dem anderen
angezeigt. Aber wieso?
Code:
Sub Klettern()
Dim i%, strDatei$
strDatei = Dir("C:\Testen\")
Do While strDatei <> ""
Debug.Print strDatei
strDatei = Dir()
Loop
End Sub
Registriert seit: 13.04.2014
Version(en): 365
Hi,
weil der Code solange durch Dein Verzeichnis läuft, bis er keine Datei mehr findet. Wenn Du das nicht programmiert hast, sondern nur abkopiert, dann solltest Du Dich mal hier durcharbeiten:
http://www.online-excel.de/excel/singsel_vba.php?f=92 u.weitere
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 11.10.2014
Version(en): 12/2007&14/2010
Weil dein Programm das verlangt, Algor! :)
Do … Loop ist eine Schleife, die erst beendet wird, wenn Dir nichts mehr findet. Solange das nicht der Fall ist, geht's weiter und das Programm setzt die Datei-Variable immer auf den neuesten Dir-Stand, also ins nächste Unterverzeichnis, sofern noch eins vorhanden ist.
Gruß, Castor
Registriert seit: 01.02.2016
Version(en): 2010
Sorry Leute,
aber ich verstehe es nicht. Den Code habe ich schon selbst geschrieben, aber nur weil ich es weiß, nicht weil ich es verstehe!
Wenn ich so etwas mal ohne Schleife (rein zur Veranschaulichung!!!!), also while oder for programmiere sieht das Ganze so aus:
Code:
Sub Ohne_Schleife()
Dim strDatei$
strDatei = Dir("C:\Testen\")
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
.
.
.
.
End Sub
Wie macht die Funktion Dir das? Weil sie überladen wurde??
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
das schreibt Microsoft dazu:
Zitat:Beim ersten Aufruf der Dir-Funktion müssen Sie einen PathName angeben. Um das nächste Element abzurufen, können Sie die Dir-Funktion nachfolgend ohne Parameter aufrufen.
Gruß Atilla
Registriert seit: 01.02.2016
Version(en): 2010
@Atilla
dank deines Zitates bekomme ich zumindest eine grobe Vorstellung davon. Obwohl das "innere" der Dir Funktion, also das "wie" natürlich noch völlig verborgen bleibt.
Zeigt auch mein Code:
Code:
Sub Von_Element_zu_Element()
Debug.Print Dir("C:\Testen\")
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
.
.
.
End Sub
Das "nachfolgende" Dir weiß vom "vorausfolgenden" welchen Wert es hat.
Registriert seit: 29.09.2015
Version(en): 2030,5
Weil es die VBA übersetzung ist von MS-DOS:
Code:
sub M_snb()
msgbox createobject("wscript.shell").exec("cmd /c Dir C:\Testen\*.* /b/a-d").stdout.readall
End Sub