Se puede buscar desde un archivo Excel un pdf?

Me gustaría saber si hay alguna posibilidad de hacer una búsqueda desde Excel mediante los códigos que tengo en la primera columna a una carpeta que contiene archivos pdf con los mismos códigos del Excel.

1 respuesta

Respuesta
1

Sí se puede.

Por ejemplo en una hoja llamada "Hoja5" en la celda A2 pon un código

En la macro cambia en esta línea por el nombre de tu carpeta que contiene los pdf

ruta = "C:\trabajo\Pdfs\"



Sub Buscar_PDf()
'Por.Dante Amor
    codigo = Sheets("Hoja5").Range("A2")
    If codigo = "" Then
        MsgBox "Captura un código en la celda A2"
        Exit Sub
    End If
    '
    ruta = "C:\trabajo\Pdfs\"
    If Right(ruta, 1) <> "\" Then ruta = ruta & "\"
    If LCase(Right(codigo, 4)) <> ".pdf" Then codigo = codigo & ".pdf"
    '
    If Dir(ruta & codigo) <> "" Then
        MsgBox "Sí existe el archivo"
    Else
        MsgBox "NO Existe"
    End If
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Buscar_PDf
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

Si el archivo existe con ese código te despliega el mensaje "Sí existe".


Lo anterior es un ejemplo para que observes que sí es posible revisar si existe un archivo Pdf. Ahora supongo que necesitas hacer algo con el archivo, también supongo que necesitas buscar varios códigos. Entonces plantea qué tienes en la columna y qué esperas de resultado.

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Hola,

Muchas gracias por la información pero no puedo ejecutarlo.

Te explico, en la columna A del Excel tengo una serie de códigos, y lo que quiero es una búsqueda automáticamente de esos códigos en la carpeta que tengo los archivos en pdf y a poder ser seleccionarlos todos al momento para poder copiarlos y moverlos.

No se si me explico... y si se puede hacer...

Muchas gracias de nuevo.

Hola,

Muchas gracias por la información pero no puedo ejecutarlo.

¿No puedes ejecutarlo?

¿Te envía un mensaje de error?

¿O qué problemas tienes?

Una cosa es seleccionarlos otra es copiarlos y otra es moverlos.

Explica con detalle lo que necesitas

Buenas tardes,

Lo que quiero es que se seleccionen para poder copiarlos o moverlos.

Explica un ejemplo a detalle de lo que quieres hacer, ya sea copiar o mover, explica con detalle qué quieres hacer, solamente un ejemplo, utiliza datos reales.

En el archivo Excel, tengo la primera columna rellenada con una serie de códigos (cada código tiene asignado un fichero pdf, estos archivos se encuentran en la misma carpeta pero dentro de esta carpeta también hay subcarpetas). El nombre de los pdf´s, aparte del código también tienen un descriptivo.

Por lo tanto, lo que me gustaría es poder hacer una búsqueda automática de esos códigos en concreto dentro de la carpeta y que seleccionen para poder copiarlos y pegarlos en otra carpeta.

La conclusión final, es para ahorrar tiempo en la búsqueda de estos ficheros, porque tengo que ir uno por uno.

Muchas gracias.

Dices:

En el archivo Excel, tengo la primera columna rellenada con una serie de códigos

Puedes poner ejemplos.


Ahora mencionas subcarpetas, eso no lo habías comentado en tu pregunta original.


Dices:

El nombre de los pdf´s, aparte del código también tienen un descriptivo.

Puedes poner ejemplos.


Dices:

Que seleccionen para poder copiarlos y pegarlos

Tú quieres seleccionarlos o que la macro los copie y los pegue en automático en otra carpeta. ¿Cómo se llama la otra carpeta?


Tienes que poner ejemplos reales y claros, de lo contrario es difícil entender lo que necesitas.

Utiliza imágenes para apoyar tus ejemplos y explicaciones.

Este es el fichero que tengo los códigos, tienen como nombre artículos y se encuentra en: C:\Users\Carlos\preventas .                    

Y esta es la carpeta donde tengo los pdfs correspondientes a estos códigos.

Pdfs se encuentran dentro de estas carpetas. ejemplo nombre pdf: 01254 tomate

Por lo tanto, lo que me gustaría es que la macro los busque, los copie y los pegue en automático en otro carpeta. Nombre de la carpeta, fichas actualizadas.

Espero que ahora lo entiendas mejor.

Muchas gracias por tu ayuda.

Te anexo la macro

Sub Copiar_Pdfs()
'Por Dante Amor
    '
    Application.ScreenUpdating = False
    Set h1 = Sheets("Hoja1")                'hoja con los códigos
    Set h2 = Sheets("Hoja2")                'hoja temporal
    h2.Cells.Clear
    ruta = "C:\Users\Carlos\Fichas\"        'carpeta inicial
    destino = "C:\fichas actualizadas\"     'carpeta destino
    '
    Set fso = CreateObject("scripting.filesystemobject")
    Set carpeta = fso.getfolder(ruta)
    sub1 = carpeta.Name
    For Each subcarpeta In carpeta.subfolders
        sub2 = subcarpeta.Name
        For Each archivo In subcarpeta.Files
            arch = archivo.Name
            If LCase(Right(archivo.Name, 3)) = "pdf" Then
                arch = archivo.Name
                j = j + 1
                h2.Cells(j, "A") = ruta
                h2.Cells(j, "B") = subcarpeta.Name
                h2.Cells(j, "C") = archivo.Name
            End If
        Next
    Next
    '
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        cod = h1.Cells(i, "A")
        Set b = h2.Columns("C").Find(cod, lookat:=xlPart)
        If Not b Is Nothing Then
            ruta = h2.Cells(b.Row, "A") & h2.Cells(b.Row, "B") & "\"
            FileCopy ruta & h2.Cells(b.Row, "C"), destino & h2.Cells(b.Row, "C")
        End If
    Next
    MsgBox "Fin"
End Sub

Cambia en la macro "Hoja1" por el nombre de tu hoja que tiene los códigos.

Crea una hoja nueva y la llamas "Hoja2", es una hoja temporal que la macro ocupará para algunas operaciones.

Revisa que los nombres de las carpetas inicial y destino estén correctas en estas líneas en la macro:

    ruta = "C:\Users\Carlos\Fichas\"        'carpeta inicial
    destino = "C:\fichas actualizadas\"     'carpeta destino

.

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas