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.
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
- Abre tu libro de Excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- En el menú elige Insertar / Módulo
- En el panel del lado derecho copia la macro
- Ahora para crear un botón, puedes hacer lo siguiente:
- Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
- Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
- 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”
- Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Buscar_PDf
- Aceptar.
- 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.
¿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
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
.
.
- Compartir respuesta