Saltar al contenido

Gestor documental de archivos


Recommended Posts

publicado

Buenos días. He hecho una utilidad para buscar archivos filtrando por tipo de documentos y verlos en un formulario.

Parte del código lo he adaptado de otras aportaciones. En el código he dejado referencia de una de ellas.

Mi problema es que puedo ver los archivos de una carpeta, buscando que los nombres de los archivos coincidan con la palabra a buscar del textbox. por ejemplo si pongo ANTONIO ALV encontraría "Contrato ANTONIO ALVAREZ..."

Lo que ahora busco es ayuda para buscar estos archivos dentro de las subcarpetas de la carpeta seleccionada, no solo en la carpeta.

¿M podéis ayudar? Os lo agradezco.

Envío la aplicación de ejemplo. Hay dos formularios, el susodicho y otro para configurar la ruta. Y aún me queda poner algún botón más, como imprimir o enviar por correo que lo tengo medio listo.

Gracias.

Moisés.

 

Gestor Documental (v.prueba).xlsm

publicado
Hace 7 horas, ikanni dijo:

Hola Piltrafilla,

Te he hecho un apaño, ya que yo cambiaría todo?, pero no hay tiempo. Te busca en todas las subcarpetas que haya en la carpeta seleccionada y la ruta se ve tambien en el listbox.

Espero te sirva.

Gestor Documental (v.prueba).xlsm 100.87 kB · 3 descargas

Gracias por el aporte, se nota la diferencia de código con el mío. 

Hay algo que no me funciona, por ejemplo si en el TextBuscar no ponía nada me aparecía en el listbox1 todos los ficheros. Con tu código me aparece solo si hay coincidencias. Y sobre las subcarpetas, busca en la primera subcarpeta pero no dentro de estas. 

No se si eso se podría solucionar...

Gracias!!

 

publicado

Hola ikanni.

Primero de todo darte las gracias por tu ayuda.

Ya para rizar el rizo, le he añadido más botones y el programa ya lo doy por terminado. Solo que quiero poner alguna validación más que creo que es importante. por ejemplo, solo quiero tratar con archivos que sean PDF. Así que en el botón de cargar ListBox quiero que tenga en cuenta esto, que no cargue ningún archivo que su extensión no sea PDF. Si lo hace, como ahora, me da problemas. Por ejemplo si en la carpeta hay un .xls me lo carga igual y entonces saltan errores como es normal si lo quiero imprimir.

Por ejemplo entiendo que podría ponerse aquí, por ejemplo.

Private Sub CommandButton3_Click()
'Mostrar archivo seleccionado en PDF
cuenta = Me.ListBox1.ListCount
For i = 0 To cuenta - 1
    If Me.ListBox1.Selected(i) = True Then
     rutaPDF = LblRutaActual.Caption & "\" & Me.ListBox1.List(i)
     ActiveWorkbook.FollowHyperlink rutaPDF, , True
    Else
    End If
Next i
End Sub

Aunque creo que donde debe ir es cuando carga el listbox tanto de manera automática como al hacer clic en el botón. En la macro "Listar_archivos_en MiRuta".

¿Podrías decirme como hacerlo? No lo tengo nada claro.

PD: Por cierto el código que pones es de un nivel muy superior al que he puesto yo, creando funciones por ejemplo.

Envío el trabajo terminado a la espera de solo este detalle.

Gracias!

 

Gestor Documental (v.prueba)(3).xlsm

publicado

Ikanni, hay una cosa que me acabo de dar cuenta que no hace. Siempre que un archivo esté en una subcarpeta no deja visualizar el documento en el webbroser, salta este error. Solo se ve los documentos si están en la carpeta, pero como digo no si están en la subcarpeta.

image.png.2da483f6681ebc3b051ad8057bfcc95f.png

Moisés.

publicado
Hace 4 horas, Pirtrafilla dijo:

Hola ikanni.

Primero de todo darte las gracias por tu ayuda.

Ya para rizar el rizo, le he añadido más botones y el programa ya lo doy por terminado. Solo que quiero poner alguna validación más que creo que es importante. por ejemplo, solo quiero tratar con archivos que sean PDF. Así que en el botón de cargar ListBox quiero que tenga en cuenta esto, que no cargue ningún archivo que su extensión no sea PDF. Si lo hace, como ahora, me da problemas. Por ejemplo si en la carpeta hay un .xls me lo carga igual y entonces saltan errores como es normal si lo quiero imprimir.

Por ejemplo entiendo que podría ponerse aquí, por ejemplo.


Private Sub CommandButton3_Click()
'Mostrar archivo seleccionado en PDF
cuenta = Me.ListBox1.ListCount
For i = 0 To cuenta - 1
    If Me.ListBox1.Selected(i) = True Then
     rutaPDF = LblRutaActual.Caption & "\" & Me.ListBox1.List(i)
     ActiveWorkbook.FollowHyperlink rutaPDF, , True
    Else
    End If
Next i
End Sub

Aunque creo que donde debe ir es cuando carga el listbox tanto de manera automática como al hacer clic en el botón. En la macro "Listar_archivos_en MiRuta".

¿Podrías decirme como hacerlo? No lo tengo nada claro.

PD: Por cierto el código que pones es de un nivel muy superior al que he puesto yo, creando funciones por ejemplo.

Envío el trabajo terminado a la espera de solo este detalle.

Gracias!

 

Gestor Documental (v.prueba)(3).xlsm 162.22 kB · 0 descargas

Hola Ikanni, he modificado esta macro, solo he puesto esto:

''''' he añadido esta linea para comprobar que los archivos fueran PDF'''''
            If Not Right(Archivo, 3) = "pdf" Then GoTo 10

No se si es muy "ortodoxo" pero parece que así funciona.

Function Listar_archivos_en(ruta As String, Completo As Boolean)
   Dim Archivo, SubCarpeta, Fila As Long, fso As New FileSystemObject, cadena As String
   With fso
      With .GetFolder(ruta)
         For Each Archivo In .Files
            ''''' he añadido esta linea para comprobar que los archivos fueran PDF'''''
            If Not Right(Archivo, 3) = "pdf" Then GoTo 10
            With Archivo
               If Cumple(.Name, TextBuscar.Value) Then
                  a = ListBox1.ListCount
                  ListBox1.AddItem
                  ListBox1.List(a, 0) = .Name
                  'ListBox1.List(a, 1) = .Path
               End If
            End With
10:
         Next
         If Completo Then
            For Each SubCarpeta In .SubFolders
               Listar_archivos_en SubCarpeta.Path, True
            Next
         End If
      End With
   End With
   Set fso = Nothing
End Function

De todos modos me sigue saltando el error cuando intento ver en el webbroser el archivo si este se encuentra en una subcarpeta. Y no averiguo el por qué.

Si puedes ayudarme!!

Gracias,

Moisés.

publicado

El error ya he visto de donde viene.

Private Sub ListBox1_Click()
cuenta = Me.ListBox1.ListCount
For i = 0 To cuenta - 1
    If Me.ListBox1.Selected(i) = True Then
      mostrar = LblRutaActual.Caption & "\" & Me.ListBox1.List(i)
      MsgBox mostrar
      Me.WebBrowser1.Navigate mostrar
    Else
    End If
Next i
End Sub

He colocado un msgbox para ver que ruta muestra cuando hacemos click en el listbox. Y veo que siempre toma como ruta la carpeta principal seguida de "\" y el nombre del archivo. Eso es un error mío, porque cuando está en una subcarpeta esta no es la ruta. ¿hay manera de poner la ruta correcta?

Gracias de antemano.

 

publicado

Innaki, creo que lo he solucionado. Tenía una variable global llamada rutaPDF y la he usado para guardar la ruta del Path. Antes tomaba los datos del label pero si hay subcarpetas no tiene sentido. He usado el dato que cargas en la segunda columna del listbox, el Path y lo he asignado a la variable rutaPDF.

Function Listar_archivos_en(ruta As String, Completo As Boolean)
   Dim Archivo, SubCarpeta, Fila As Long, fso As New FileSystemObject, cadena As String
   With fso
      With .GetFolder(ruta)
         For Each Archivo In .Files
            If Not Right(Archivo, 3) = "pdf" Then GoTo 10
            With Archivo
               If Cumple(.Name, TextBuscar.Value) Then
                  a = ListBox1.ListCount
                  ListBox1.AddItem
                  ListBox1.List(a, 0) = .Name
                  ListBox1.List(a, 1) = .Path
''''''''''''''''''''''''''''''''' aquí he añadido esta linea
                  rutaPDF = ListBox1.List(a, 1)
'''''''''''''''''''''''''''''''''
               End If
            End With
10:
         Next
         If Completo Then
            For Each SubCarpeta In .SubFolders
               Listar_archivos_en SubCarpeta.Path, True
            Next
         End If
      End With
   End With
   Set fso = Nothing
End Function

Así que ahora al ver el documento en el webbroser, o al imprimirlo, o al enviarlo por correo uso la ruta real del documento que es donde tu lo habías previsto en el listbox.

Espero ya no me falle nada más.

Gracias!

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.