** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - archivos + carpetas a variable
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

archivos + carpetas a variable

 Responder Responder
Autor
Mensaje
Eduard.2008 Ver desplegable
Colaborador
Colaborador


Unido: 05/Diciembre/2008
Localización: Catalunya
Estado: Sin conexión
Puntos: 529
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Eduard.2008 Cita  ResponderRespuesta Enlace directo a este mensaje Tema: archivos + carpetas a variable
    Enviado: 12/Enero/2021 a las 10:33
Hola a todos
Tengo el siguiente código que cuenta el nº de archivos y de subcarpetas.

'Cuenta nº de archivos
Dim ruta As String
ruta = "u:\expedients\" & Me!EXPED
With CreateObject("Scripting.FileSystemObject").getfolder(ruta).Files
End With

'Cuenta nº de subcarpetas
Dim ruta2 As String
ruta2 = "u:\expedients\" & Me!EXPED
With CreateObject("Scripting.FileSystemObject").getfolder(ruta2).SubFolderS
End With

Necesito pasar la suma de los resultados obtenidos a una variable y ahi es donde estoy atascado.
Muchas gracias por vuestra ayuda.
www.ofp.cat
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 12/Enero/2021 a las 10:58
Yo he hecho algo como esto:
Cita
Function aaa()
Dim ruta As String, Fs As Object, Folder, NumFiles
ruta = "c:\temp"
Set Fs = CreateObject("Scripting.FileSystemObject")
Set Folder = Fs.getfolder(ruta)
Set NumFiles = Folder.Files
Debug.Print NumFiles.Count
End Function


... te adjunto el enlace del manual de VBScript que suelo usar




Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Eduard.2008 Ver desplegable
Colaborador
Colaborador


Unido: 05/Diciembre/2008
Localización: Catalunya
Estado: Sin conexión
Puntos: 529
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Eduard.2008 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 12/Enero/2021 a las 11:31
Mihura, muchas gracias por tu respuesta.

Me devuelve el  número de archivos pero no contabiliza el número de subcarpetas.
Necesito la suma para verificar que la carpeta está totalmente vacía.

Dim ruta As String, Fs As Object, Folder, NumFiles
ruta = "u:\expedients\" & Me!EXPED
Set Fs = CreateObject("Scripting.FileSystemObject")
Set Folder = Fs.getfolder(ruta)
Set NumFiles = Folder.Files
Debug.Print NumFiles.Count
Me!alies = NumFiles.Count

Muchas gracias por vuestra ayuda.
www.ofp.cat
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 12/Enero/2021 a las 11:56
... es que yo mirado la parte de que me cuente los archivos, no la de las carpetas.

Tendrás que hacer algo similar para las carpetas, un objeto que las contenga y después sacar la cuenta (para eso he puesto la ruta al archivo de ayuda, para que puedas ver los distintos objetos, métodos, propiedades, ...).


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Eduard.2008 Ver desplegable
Colaborador
Colaborador


Unido: 05/Diciembre/2008
Localización: Catalunya
Estado: Sin conexión
Puntos: 529
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Eduard.2008 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 14/Enero/2021 a las 11:17
Muchas gracias Mihura.
Se puede cerrar
Muchas gracias por vuestra ayuda.
www.ofp.cat
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 14/Enero/2021 a las 11:43
¿Y la solución es....?

Para cerrar el hilo pedimos la solución (si la hay) para que quien venga después buscando información no se encuentre con un callejón sin salida.

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: La Gloria
Estado: Sin conexión
Puntos: 3849
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita lbauluz Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 14/Enero/2021 a las 12:14
No estoy seguro de si es esto lo que quieres, pero igual te es útil

' Subfunción para llamar contar ficheros y carpetas
Sub fCuentaFichCarpCall()

     ' Variables
    Dim sDirec As String
        
    ' Carpeta inicial
    sDirec = "d:\temp\"
    
    ' Inicializar contadores
    iNumCarp = 0
    iNumFich = 0
    ' Llamar a la función con el directorio inicial
    Call fCuentaFichCarp(sDirec)
    
    ' Ventana con la respuesta
    MsgBox "Número de ficheros en todos los subdirectorios: " & iNumFich & vbCrLf & "Número de subdirectorios: " & iNumCarp, vbInformation, "Foro"
    
End Sub


' Función recursiva que cuenta ficheros y subcarpetas
Sub fCuentaFichCarp(sCarpeta As String)
    
    ' Variables
    Dim iNumCarpCount As Integer
    Dim iFilesCnt As Integer
    Dim iAddFilesCount As Integer
    Dim sFileName As String
    Dim oFile As Object
    Dim oFolder As Object

    ' Actualizar el contador de carpetas.
    iNumCarp = iNumCarp + 1
    
    ' Verificar que la carpeta recibida tiene "\" al final
    If Right(sCarpeta, 1) <> "\" Then
        sCarpeta = sCarpeta & "\"
    End If
        
    'Crear objetos FSO
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(sCarpeta)
    
    ' Verificar si la carpeta indicada existe o no
    If oFSO.FolderExists(sCarpeta) Then
         iFilesCnt = oFolder.Files.Count
         iNumFich = iNumFich + iFilesCnt
    End If
    
    ' Bucle por todas las subcarpetas
    For Each oSubFolder In oFolder.SubFolders
        ' Verificar ficheros en la carpeta
        iAddFilesCount = oSubFolder.Files.Count
        ' Verificar subcarpetas en la carpeta
        iNumCarpCount = oSubFolder.SubFolders.Count
        ' Recursivo
        ' Verificar si hay más subcarpetas
        If iNumCarpCount <> 0 Then
            Call fCuentaFichCarp(sCarpeta & oSubFolder.Name)
        Else
            ' Añadir número de ficheros
            iNumFich = iNumFich + iAddFilesCount
        End If
    Next
End Sub

El Búho es un pajarraco
Arriba
Eduard.2008 Ver desplegable
Colaborador
Colaborador


Unido: 05/Diciembre/2008
Localización: Catalunya
Estado: Sin conexión
Puntos: 529
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Eduard.2008 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 15/Enero/2021 a las 07:08
Buenos días.
Di por buena la solución propuesta por Mihura y que, por falta de tiempo, aún no he podido implementar.
Analizaré también lo que ha propuesto Ibauluz, gracias.
En cuanto pueda aportaré la solución, si es que logro que me funcione.
Muchas gracias a todos.
Muchas gracias por vuestra ayuda.
www.ofp.cat
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable