Contar archivos dentro de una carpeta

Para Elsa.

Hola Elsa, no había tenido la oportunidad de agradecerte la macro que lista varias carpetas. Me sirvió demasiado. Dado a su utilidad me surgió un nuevo interrogante, ¿es posible mostrar en una nueva columna la cantidad de archivos que tiene dentro de la carpeta sin importar el formato que dichos archivo tengan?

De nuevo mil gracias por tu ayuda, y quedo atento a tus comentarios

1 respuesta

Respuesta
3

No se muy bien qué debe contarse. Imaginemos que una de las rutas sea como en la imagen, que te devolverá 2 elementos que son las subcarpetas:

¿Cuánto suma el total de archivos para ti?  6...8  ?

Sdos!

Hola Elsa, espero estés muy bien.

A tu pregunta, para mi serian 6.

Sin embargo tratare de ser más especifico. En días pasados, tu me ayudaste muy amablemente con la siguiente macro, y quisiera incorporar en la siguiente columna (es decir para la macro, columna F) la cantidad de archivos que este contiene. Para el ejemplo que me pones los 6 archivos.

Macro:

Sub listarSubcarpetas_multiples()
'x Elsamatilde
Dim fs, carpeta, subcarpeta As Object
Dim ruta As String, filx As Long
Set fs = CreateObject("Scripting.FileSystemObject")
'A partir de A1 se colocarán todas las carpetas a recorrer (SIN BARRAS)
ultima = Range("A" & Rows.Count).End(xlUp).Row
'se vuelcan los resultados a partir de fila 2, col C
filx = 2
'se recorre la col A hasta la última fila con datos... ajustar inicio
For i = 1 To ultima
    ruta = Range("A" & i)
    'contempla posible error de ruta no hallada
    On Error GoTo sinRuta
    Set carpeta = fs.GetFolder(ruta)
    'se buscan las subcarpetas de la ruta solicitada
    For Each subcarpeta In carpeta.SubFolders
        Range("C" & filx) = ruta
        Range("D" & filx) = subcarpeta.Name
        Range("E" & filx) = FileDateTime(subcarpeta)
        filx = filx + 1
    Next
sigue:
Next i
'se autoajustan las col B:E
Columns("B:E").EntireColumn.AutoFit
[C2].Select
MsgBox "Fin de la búsqueda.", , "INFORMACIÓN"
Exit Sub
sinRuta:
    'si una ruta no se encuentra deja el mensaje en col B y sigue con el resto
    Range("B" & i) = "Ruta no hallada"
    GoTo sigue
End Sub

¿Si son 6 sería no mejor colocarlo en la col B?

¿Si lo coloco en F... no te parecerá que dentro de cada subcarpeta celeste hay 6 archivos?

Como prefieras, solo estoy tratando de confirmar la consulta.

Sdos!

Hola Elsa.

Te ofrezco una disculpa,  no me he explicado lo suficientemente bien y creo que estamos hablando de cosas diferente.  En la macro que puse en la respuesta anterior, en la columna "A" pongo la ruta, donde quiero que la macro vaya a buscar que carpetas hay y me las lista. en donde el resultado que genera es Columna C: Ruta inicial, Columna D: Nombre de la carpeta y columna E: ultima fecha de modificación. Y me gustaría añadir en la columna F.   dentro de esa carpeta que listo cuantos archivos tiene cada una. es por esto que mencione la columna "F"

Quedo pendiente para validar si es posible.

Muchas gracias por tu apoyo.

Si, ya me parecía que se trataba de las subcarpetas.

Bien, el 2do bucle For quedará así entonces, a partir de este comentario:

'se buscan las subcarpetas de la ruta solicitada

    For Each subcarpeta In carpeta.subfolders
        Range("C" & filx) = ruta
        Range("D" & filx) = subcarpeta.Name
        Range("E" & filx) = FileDateTime(subcarpeta)
        For Each Archi In subcarpeta.Files
            canti = canti + 1
        Next Archi
        Range("F" & filx) = canti: canti = 0
        filx = filx + 1
    Next subcarpeta

Luego continuan estas líneas:

sigue:
Next i

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas