Jump to content

Gestor documental de archivos


Recommended Posts

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

Link to post
Share on other sites
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!!

 

Link to post
Share on other sites

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

Edited by Pirtrafilla
Link to post
Share on other sites
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.

Link to post
Share on other sites

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.

 

Link to post
Share on other sites

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!

Link to post
Share on other sites
a


  • Crear macros Excel

  • Posts

    • Hola!   He modificado la macro de evento, para que funcione tanto para escribir la fecha, como para restringir en que columnas debe poner mayusculas Ten mucho cuidado con las macros de evento, te puedes volver loco 🤪   Saludos a todos Tabla Excel.xlsm
    • Hola, Hace algún tiempo, en todo excel, publicaron una macro para cambiar los textos a mayusculas, era esta. Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range On Error Resume Next Set rng = Target.SpecialCells(xlCellTypeConstants, xlTextValues) On Error GoTo 0 If rng Is Nothing Then Exit Sub Dim c As Range With Application .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationManual For Each c In rng c = UCase(c) Next c .Calculation = xlCalculationAutomatic .EnableEvents = True .ScreenUpdating = True End With End Sub Es como dice @Silvia, su macro es la que ocasiona el problema. Gabriel
    • Fabuloso!!, anexo archivo con los datos, que no es mucha informacion. Agradecido por tu inmensa ayuda JSD Datos del ComboBox.xlsx
    • hola Antonio Casi te puedo asegurar que el problema es ocasionado por tu macro,  algún entendido en macros la podría revisar.. La cosa es que pese a que cerré tu libro el proyecto seguía apareciendo en ver código y tenía los mismos problemas que mencionas .  Tuve que cerrar por completo el excel para arreglar esta situación...... Entonces se me ocurrió eliminar la macro y guardar el libro (sin la macro) y ahí pude resolver tu problema 🤣   saludos, Silvia    
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy