Visual Basic - URGENTE-Rellenar TreeView con Subcarpetas y archivos

Life is soft - evento anual de software empresarial
 
Vista:

URGENTE-Rellenar TreeView con Subcarpetas y archivos

Publicado por acid_burd (13 intervenciones) el 04/01/2012 18:30:23
Buenas espero que podais ayudarme.
Lo que necesito es rellenar un Arbol con las carpetas y archivos existentes en ellas. Me explico.
Dentro de una carpeta principal "Documentos" hay diferentes carpetas como por ejemplo "Reuniones", "Visitas Medicas", etc (No son siempre las mismas carpetas) y dentro de cada una de estas carpetas hay X archivos con una fecha por nombre(la fecha en la que se creó dicho archivo). Entonces necesito que se me generen los nodos padre con el nombre de las carpetas y dentro de dichos nodos se listen los archivos que hay dentro de dicha carpeta. hasta ahora lo he hecho así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim archivo As String
    Dim nodoX As node
    Dim contador As String
 
 
    DirDocumentos = V_DAtendidos + "\" + CStr(Me.T_NHistoria) + "\Documentos"
    archivo = Dir(DirDocumentos + "\", vbDirectory)
 
 
    contador = "1"
    Do While archivo <> ""
        If archivo <> "." And archivo <> ".." Then
            If (GetAttr(DirDocumentos + "\" & archivo) And vbDirectory) = _
            vbDirectory Then
                Set nodeX = ArbolPlantillas.Nodes.Add(, tvwChild, "A" + contador, archivo)
 
                RellenarSubNodos archivo, contador
 
                contador = CInt(contador) + 1
            End If
        End If
        archivo = Dir
    Loop


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim archivoS As String
    Dim nodoS As node
    Dim contadorS As String
 
    DirDocumentos = V_DAtendidos + "\" + CStr(Me.T_NHistoria) + "\Documentos"
    archivoS = Dir(DirDocumentos + "\" + archivo + "\", vbArchive)
    contadorS = "1"
    Do While archivoS <> ""
        If archivoS <> "." And archivoS <> ".." Then
            If (GetAttr(DirDocumentos + "\" & archivo + "\" & archivoS) And vbArchive) = _
            vbArchive Then
                Set nodeX = ArbolPlantillas.Nodes.Add("A" + contador, tvwChild, "B" + contadorS, archivoS)
                contadorS = CInt(contadorS) + 1
            End If
        End If
        archivoS = Dir
    Loop


Si quito la llamada a la funcion "RellenarSubNodos" que es donde me metería los archivos en el nodo correpondiente funciona bien. Se me muestran las carpetas como nodos. Pero con la funcion me da un error en la linea "archivo=Dir" de la funcion principal. El fallo dice "Llamada a procedimiento o argumento no validos"

Conozco muy poco de este control (treeview) y de la funcion Dir, voy aprendiendo segun los uso asi que tal vez haya una manera más sencilla de realizar lo que quiero.

Un saludo y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

URGENTE-Rellenar TreeView con Subcarpetas y archivos

Publicado por acid_burd (13 intervenciones) el 05/01/2012 12:24:46
Ya esta funcionando perfectamente. Ahora solo me queda ajustarlo para que no muestre la extension y demas y quedará perfecto. Os paso el código modificado por si alguien tiene o tendrá el mismo problema.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Form_Load()
 
 
    Dim Fso As FileSystemObject
    Dim El_Directorio As Folder
 
 
 
    DoEvents
 
    Set Fso = New FileSystemObject
    Set El_Directorio = Fso.GetFolder(DirDocumentos)
    Call RellenarNodosPlantillas(El_Directorio)
 
End Sub
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Private Sub RellenarNodosPlantillas(ByVal El_Directorio As Folder)
 
    On Error GoTo errsub
        Dim contador As String
 
        'Variable del tipo Folder
        Dim SubDirectorio As Folder
 
 
        contador = "1"
        'Recorrer los subdirectorios
        For Each SubDirectorio In El_Directorio.SubFolders
            'Agregar el Path
            Set nodeX = ArbolPlantillas.Nodes.Add(, tvwChild, "A" + contador, SubDirectorio.Name)
            Call RellenarSubNodos(SubDirectorio, contador)
            'Sigue listando los directorios
            RellenarNodosPlantillas SubDirectorio
            contador = Str(CInt(contador) + 1)
        Next
 
    Exit Sub
 
    'Error
errsub:
    'Error de permiso denegado
    If Err.Number = 70 Then
        Resume Next
    ElseIf Err.Number = 91 Then
        Screen.MousePointer = vbDefault
        Exit Sub
    Else
        MsgBox Err.Description, vbCritical
        Exit Sub
 
    End If
End Sub
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub RellenarSubNodos(ByVal SubDirectorio As String, contador As String)
    Dim nodeX As node
    Dim contadorS
    Dim El_Archivo As File
    Dim El_Directorio As Folder
    Dim Fso As FileSystemObject
    Dim DirDocumentos As String
 
    'Nuevo objeto felisystemobjetc
    Set Fso = New FileSystemObject
 
    'Obtiene el directorio
    DirDocumentos = V_DAtendidos + "\" + CStr(Me.T_NHistoria) + "\Documentos"
    Set El_Directorio = Fso.GetFolder(SubDirectorio)
 
    contadorS = "1"
 
    'Listar los ficheros de esta carpeta
    For Each El_Archivo In El_Directorio.Files
        Set nodeX = ArbolPlantillas.Nodes.Add("A" + contador, tvwChild, "B" + contadorS, El_Archivo.Name)
        contadorS = Str(CInt(contadorS) + 1)
    Next El_Archivo
 
 
End Sub
Espero que os sea util.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar