Haz una pregunta »

VBA VB6 - Leer todos los archivos, carpetas y subcarpetas

Junio 2013


La función Scripting.FileSystemObject reemplaza ventajosamente a la función Application.FileSearch, que por otro lado ya no está disponible desde Office 2007.
Un ejemplo para almacenar todos los archivos de imágenes en una carpeta.
Pegar el código en un modulo .bas:

Option Explicit         
Dim Data()         
Dim NBdata As Integer         

`Obtener todos los archivos de una carpeta y subcarpetas
'Si SubCarp = true         
`La carpeta de origen debe estar en Carp
Public Function LeerCarpeta (ByVal Carp As String, Optional SubCarp As Boolean) As Integer         
Dim Obj, CarpP, F, S, sf, F1, Fsub      
Dim i As Integer, Ext As String         
Dim Ruta As String         
Dim T As Double         
   ' Application.MousePointer = 13 'Para VB6        
    Set Obj = CreateObject("Scripting.FileSystemObject")         
    Set RepP = Obj.Getfolder(Carp)         
    Chem = Carp: If Right(Ruta, 1) <> "\" Then Ruta = Ruta & "\"         
             
    Set sf = CarpP.subfolders         
    Set F = CarpP.Files         
    GoSub RellenarData 'los archivos de la carpeta principal         
    If SubCarp Then 'los archivos de las subcarpetas
        For Each FSub In sf         
            Set CarpP = Fsub         
            Set F = CarpP.Files         
            GoSub RellenarData         
        Next Fsub         
    End If         
Exit Function         
'**********************************************************************         
RellenarData:         
    For Each F1 In F         
        Ext = LCase(Right(F1.Name, 3))         
        If Ext = "bmp" Or Ext = "jpg" Then 'extensión a adaptar         
            ReDim Preserve Data(5, NBdata)         
            Data(0, NBdata) = F1.Name         
            Data(1, NBdata) = F1.ParentFolder & "\" & F1.Name         
            Data(2, NBdata) = F1.DateCreated         
            Data(3, NBdata) = F1.DateLastAccessed         
            Data(4, NBdata) = F1.DateLastModified         
            T = F1.Size         
            If T < 99999 Then         
                Data(5, NBdata) = T & " Bi"         
            ElseIf T < 999999 Then         
                Data(5, NBdata) = Round(T / 1000, 1) & " Ko"         
            Else         
                Data(5, NBdata) = Round(T / 1000000, 1) & " Mo"         
            End If         
            NBdata = NBdata + 1         
        End If         
    Next F1         
Return         
             
End Function


También es posible guardar información de los archivos
Adaptar el código de acuerdo a las necesidades.

Véase también

Comunidad de asistencia y consejos.

VBA-VB6 -  Read all directories files
VBA-VB6 - Read all directories files
Por jak58 el 7 de mayo de 2010
VBA VB6 - Lire tous les fichiers, répertoires et sous/rép
VBA VB6 - Ler todos os arquivo, diretórios e subdiretórios
El artículo original fue escrito por lermite222. Traducido por Carlos-vialfa.
Este documento intitulado « VBA VB6 - Leer todos los archivos, carpetas y subcarpetas » de Kioskea (es.kioskea.net) esta puesto a diposición bajo la licencia Creative Commons. Puede copiar, modificar bajo las condiciones puestas por la licencia, siempre que esta nota sea visible.
Recibe nuestro newsletter

salud.kioskea.net

¿Cómo crear un archivo PPS?
VBA VB6 - Forzar el despliegue de un ComboBox