xxDDD le vas a kitar la ilusion pobrecillo
no es querer quitarle la ilución ni nada del estilo pero la forma de mostrar el code no es la adecuada que mejor respuesta que esto:
Yo no se nada de VB apenas configurar XBOT pero explica para los que le interesa no te agas el genio por un codigito
si hay alguna otra forma mas simple para listar todas las carpetas de un Disco me gustaria que la postes así puedo aprender y la comienzo a utilizar
Formas mas simples miles y tal vez mucho mas simples de la que te voy a mostrar no reduce gran cantidad de lineas pero se entiende muy bien porque estoy usando correctamente la recursividad usar gotos es un mal habito.
mira este codigo
Private Sub buscar()
Dim foldersTotales As Integer
Dim contados As Long
On Error Resume Next
foldersTotales = Dir1.ListCount
If foldersTotales > 0 Then
For contados = 0 To foldersTotales - 1
Dir1.Path = Dir1.List(contados)
Form1.Refresh
buscar
Next
End If
List1.AddItem Dir1.Path
Dir1.Path = Dir1.List(-2)
Dir1.Refresh
End Sub
El tuyo tiene 21 lineas el mio 16 y es mucho mas facil de entender el que te estoy mostrando.
Recuerda que gotos muy pocas veces se debe de usar ya que si es un trabajo empresarial otros programadores les va a doler la cabeza tratando de ver todo su funcionamiento.
Para implementar el codigo que puse tan solo hay que colocar un boton
'Buscador recursivo de carpeta by robokop
'Agregar un dirlist , listbox
Private Sub Command1_Click()
Dir1.Path = "c:\"
buscar
MsgBox ("Todos los archivos listados correctamente")
End Sub
Private Sub buscar()
Dim foldersTotales As Integer
Dim contados As Long
On Error Resume Next
foldersTotales = Dir1.ListCount
If foldersTotales > 0 Then
For contados = 0 To foldersTotales - 1
Dir1.Path = Dir1.List(contados)
Form1.Refresh
buscar
Next
End If
List1.AddItem Dir1.Path
Dir1.Path = Dir1.List(-2)
Dir1.Refresh
End Sub
Mientras este listando las carpetas no le muevan al form ni le piquen ya que sale el letrero de no responde la aplicacion por la rapidez en que lista los archivos entonces al agregarlos al listbox traba el formulario.
Aqui uso el dirlist para mayor facilidad pero se puede remplazar por apis o agregando una referencia a microsoft scripting runtime y creando un objeto FileSystemObject
asi
Dim direc As New FileSystemObject
un ejemplo seria
Private Sub Form_Load()
'Agregar una referencia a microsoft scripting runtime
'menu->proyecto->referencia
Dim Dire As New FileSystemObject
Dim carpeta As Folder
Dim i
Set carpeta = Dire.GetFolder("C:\")
If carpeta.SubFolders.Count = 0 Then: Exit Sub
For Each i In carpeta.SubFolders
List1.AddItem (i)
Next
End Sub
es mejor listarlos de esta segunda forma o con apis porque asi se obtienen directorios ocultos que no se pueden obtener con el dirlist
salu2!!!