Buscar un archivo a partir del valor de una celda en excel (macro)

No se si se pueda realizar lo siguiente: lo que quiero es que a partir de un valor escrito en una celda de excel pueda ejecutar una macro la cual me busque en una carpeta de mi pc el archivo con el nombre que esta en la celda, si lo localiza me de un mensaje de archivo encontrado y pueda abrirlo desde excel. Se supone que en dicha carpeta debo tener un archivo .xls y un .pdf con el nombre que esta en la celda.

1 respuesta

Respuesta
2

Te mando la solución, sigue mis instrucciones en esta macro:

-Tenemos anotado en la celda A1 el nombre del archivo de excel incluida la extensión.

-En la macro que te adjunto tienes que cambiar la carpeta donde buscamos en la línea que empieza por CHDIR...

Yo he puesto "C:\Users\Luis\" tu tendrás que modificarlo según tu carpeta. Las comillas hay que dejarlas y la última barra del final también

Después solo queda ejecutarla.

Sub ejemplo()
'por luismondelo
ChDir "C:\Users\Luis\"
nombre = Range("a1").Value
Set fso = CreateObject("scripting.filesystemobject")
If fso.fileexists(CurDir() & "\" & nombre) Then
x = MsgBox("el archivo existe. Desea abrirlo??", vbYesNo, "ATENCION")
If x = vbNo Then Exit Sub
Workbooks.Open nombre
Else
MsgBox "no existe"
End If
End Sub

no olvides finalizar la consulta

gracias por su respuesta ya trate de ejecutarla pero no funciona correctamente, al ejecutar la macro me manda un mensaje donde me indica que hay un bloque if sin end if, el valor que tengo en la celda A1 es "1241.pdf" y ese esta en la carpeta indicada, que esta fallando... :S

Sub revisión()
ChDir "\\192.168.1.15\revisión\Archivos XML proveedores\2012\Kimex Tela\09 Septiembre\" nombre = Range("A1").Value
Set fso = CreateObject("scripting.filesystemobject")
If fso.fileexists(CurDir() & "\" & nombre) Then
x = MsgBox("el archivo existe. Desea abrirlo??", vbYesNo, "ATENCIÓN")
If x = vbNo Then Exit Sub
Workbooks.Open nombre
Else
MsgBox "no existe"
End If
End Sub

gracias.

Claro, es que no te he hecho la macro para abrir un excel y no un pdf...

Lo arreglo y te lo mando

Te mando la nueva macro como mi ejemplo, ya sabes lo que tienes que cambiar, pero ahora tienes que cambiar más cosas:

La línea que empieza por shell indica en que dirección se encuentra mi programa para abrir pdf, tu tendrás que cambiarlo para poner el path de donde se encuentra tu programa de adobe.

La macro está probada y funciona perfectamente abriendo el pdf

Sub ejemplo()
'por luismondelo
ChDir "C:\Users\Luis\"
nombre = Range("a1").Value
Set fso = CreateObject("scripting.filesystemobject")
If fso.fileexists(CurDir() & "\" & nombre) Then
x = MsgBox("el archivo existe. Desea abrirlo??", vbYesNo, "ATENCION")
If x = vbNo Then Exit Sub
Shell "C:\Program Files (x86)\Nuance\PDF Reader\bin\pdfreader.exe " & nombre
Else
MsgBox "no existe"
End If
End Sub

no olvides finalizar la consulta

hola, disculpa la molestia pero me genera error aun, note dos cosas que no esta ejecutando en la parte de código donde esta "curdir()" eso no lo esta validando tengo que poner tal cual el path para que funcione y encuentre el archivo, y otra es que en la parte de shell cuando intenta de abrir el pdf me dice que no encuentra el archivo.... :S
Shell ("C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe" & nombre)

La macro está probada en mi equipo y funciona perfectamente.

Asegúrate de copiarla bien y de poner el nombre del archivo en la celda A1 con la extensión, por ejemplo: pppp.pdf

ok te comento que esta pasando, al cambiar el path después de chdir y direccionarlo a una carpeta local de mi maquina si abre sin problema pero cuando quiero que abra una capeta desde una dirección de red ahi da la falla, no se por que pase eso o quizás haya otra forma de decirle que el archivo esta en una unidad de red....

No debería fallar si el path está correctamente escrito. Asegúrate de ello

ok, estoy revisando esta situación para ver que es lo que esta pasando, agradezco mucho el aporte lo adecuare para que funcione bien en mi maquina, solo dejame comentarte que te falta un end if en tu código tienes 2 if y solo cierras uno vale. gracias nuevamente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas