Abrir archivo PDF con commandboton en excel

Quiero crear un commandbotton ("VER PDF") en excel que me permita abrir un archivo .pdf, tomando la referencia de la celda activa. Por ejemplo: la celda activa o marcada =("A2")contiene ("17LAESA196"), una vez posicionado el cursor en esa celda y dando click en el botón ("VER PDF") yo pueda ver el archivo pdf de una carpeta especifica que contenga ese mismo nombre "17LAESA196"(no es solo ir a la ruta donde esta el archivo, sino visualizar el archivo como tal, igual que hacer un hipervínculo).

Ustedes dirán: por que no hacer un hipervínculo, ahora les explico: tengo un archivo excel master, este tiene una conexión con otro excel en Onedrive. Automáticamente realizo cambios en el archivo master, en la conexión también se genera el cambio. Esta conexión funcioana a la perfección. Ahora bien, en el archivo excel que esta en Onedrive estoy ejecutando un macro que me permite posicionarme en la celda y visualizar en un control de imagen el archivo relacionado con la referencia de dicha celda en formato .JPG, este macro funciona bien con las imágenes de una sola hoja, pero cuando convierto los archivos pdf de dos páginas a imágenes, me genera dos archivos .jpg por separado, lo cual en el macro antes mencionado no funciona ya que quiero mostrar una sola imagen. Por eso es que quiero crear el botón para visualizar el archivo pdf (de dos o más páginas) que contiene la referencia de la celda activa. En el ARCHIVO excel que esta en OneDrive (archivo con la conexión) he intentado varias veces crear el hipervínculo, y en el primer intento funciona, pero cuando cierro el archivo y vuelvo a abrirlo no mantiene el hipervínculo, o sea que se pierde el hipervínculo antes creado, por eso descarte la idea del hipervínculo.

Ufffff larga mi pregunta pero quería que me entendieran

Anyway gracias por la ayuda que me puedan dar.

Saludos

(Nota: la respuesta a muchas de las preguntas de este foro me ha ayudado a crear macros para hacer más dinámicas mis hojas de excel en mi trabajo y en mi negocio.

1 respuesta

Respuesta
2

Te anexo la macro

Cambia en la macro inicio = "C:\" por la carpeta inicial donde están las carpetas

Sub Abrir_Pdf()
'Por.Dante Amor
    inicio = "C:\"
    ruta = ActiveCell.Value
    arch = ActiveCell.Value
    If ruta = "" Then
        MsgBox "Celda vacía"
        Exit Sub
    End If
    ruta = inicio & ruta & "\"
    If Dir(ruta, vbDirectory) = "" Then
        MsgBox "La ruta no existe"
        Exit Sub
    End If
    arch = arch & ".pdf"
    If Dir(ruta & arch) = "" Then
        MsgBox "El archivo no existe"
        Exit Sub
    End If
    '
    ActiveWorkbook.FollowHyperlink ruta & arch
End Sub

.

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

.

Avísame cualquier duda

.

Gracias Dante por la respuesta

esto es lo que estoy habiendo: (Macro enviada)

Private Sub CommandButton1_Click()
inicio = "C:\Users\yanru\Download\PDFS"

ruta = ActiveCell.Value
arch = ActiveCell.Value
If ruta = "" Then
MsgBox "Celda vacía"
Exit Sub
End If
ruta = inicio & ruta & "\"
If Dir(ruta, vbDirectory) = "" Then
MsgBox "La ruta no existe"
Exit Sub
End If
arch = arch & ".pdf"
If Dir(ruta & arch) = "" Then
MsgBox "El archivo no existe"
Exit Sub
End If
ActiveCell.FollowHyperlink ruta & arch
End Sub

esto es lo que necesito que el macro devuelva

Te falta una diagonal, tienes esto:

inicio = "C:\Users\yanru\Download\PDFS"

Debe ser así:

inicio = "C:\Users\yanru\Download\PDFS\"

No funciona, aun sigue haciendo esto

celda vacia = msgbox "celda vacia"

celda con la referencia = msgbox "la ruta no existe"

intente esto: (grabe un macro y lo inserte en el boton "ver PDF")

Private Sub CommandButton1_Click()

Range("C3").Select

    Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

    ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _

        , DisplayAsIcon:=False, Left:=288, Top:=152.25, Width:=306.75, Height _

        :=86.25).Select.

Esto solo devuelve el archivo especifico de la celda con la referencia, si marco otra celda con la referencia diferente no se ejecuta, o sea que tendría que configurar cada celda por separado y eso seria mucho código

¿Qué dices?

Pon una imagen del explorador de windows para ver cómo se llama la carpeta

También dime cómo se llama la carpeta donde tienes tu archivo

Ahí esta la imagen solicitada. (Creo... je je)

Pero en tu imagen no veo que dentro de la carpeta "PDFS" tengas una carpeta que se llame "17LAESA196"

Solamente veo un archivo pdf con el nombre "17LAESA196.pdf"

Entonces no entiendo si tienes una carpeta llamada "17LAESA196"


Prueba lo siguiente, pon todos tus archivos pdf dentro de la carpeta PDF

Ejecuta la siguiente macro

Sub Abrir_Pdf()
'Por.Dante Amor
    ruta = "C:\Users\yanru\Download\PDFS\"
    'ruta = "C:\trabajo\"
    arch = ActiveCell.Value
    If arch = "" Then
        MsgBox "Celda vacía"
        Exit Sub
    End If
    If Dir(ruta, vbDirectory) = "" Then
        MsgBox "La ruta no existe"
        Exit Sub
    End If
    arch = arch & ".pdf"
    If Dir(ruta & arch) = "" Then
        MsgBox "El archivo no existe"
        Exit Sub
    End If
    '
    ActiveWorkbook.FollowHyperlink ruta & arch
End Sub

sal u dos

Mira este video

https://drive.google.com/file/d/0BwXRxfpRPe13d3pGYVIzUmVJWHc/view?usp=drivesdk

Me dejas saber

Gracias 

¿Probaste la última macro que te envié?

¿Seguiste las indicaciones?

Dante

Presenta lo mismo que te había comentado en el post anterior. 

Celda sin referencia = celda vacía

Celda con referencia = ruta no existe

Agregue el mismo código tal y como lo indicaste, 

Entonces no estás poniendo la ruta correcta. La imagen que pusiste no se ve la ruta, solamente se un texto que dice: "This Pc" ; y eso no es una ruta.

Prueba lo siguiente, pon tu archivo pdf en tu disco en la ruta "C:\"

Ejecuta la siguiente macro:

Sub Abrir_Pdf()
'Por.Dante Amor
    ruta = "C:\"
    'ruta = "C:\trabajo\"
    arch = ActiveCell.Value
    If arch = "" Then
        MsgBox "Celda vacía"
        Exit Sub
    End If
    If Dir(ruta, vbDirectory) = "" Then
        MsgBox "La ruta no existe"
        Exit Sub
    End If
    arch = arch & ".pdf"
    If Dir(ruta & arch) = "" Then
        MsgBox "El archivo no existe"
        Exit Sub
    End If
    '
    ActiveWorkbook.FollowHyperlink ruta & arch
End Sub

Prueba nuevamente

AQUÍ ESTA LA PRUEBA DE LO QUE ESTOY HACIENDO

Private Sub CommandButton1_Click()
ruta = "C:\Users\yanru\Downloads\PDFS\"
ruta = "C:\trabajo\"
arch = ActiveCell.Value
If arch = "" Then
MsgBox "Celda vacía"
Exit Sub
End If
If Dir(ruta, vbDirectory) = "" Then
MsgBox "La ruta no existe"
Exit Sub
End If
arch = arch & ".pdf"
If Dir(ruta & arch) = "" Then
MsgBox "El archivo no existe"
Exit Sub
End If
ActiveWorkbook.FollowHyperlink ruta & arch

End Sub

Lo siento dante pero no funciona, por lo menos no lo que quiero que haga, ¿viste el video que te mande?

Pero esa no es la última macro que te envié. Tú no tienes una carpeta llamada "trabajo", en la macro yo puse comentada esa línea, pero tú la habilitaste, por eso no funciona.

Te pongo nuevamente la macro, no cambies nada en la macro. Pon tu archivo en la ruta C:\

No pongas el archivo en otra ruta, tienes que ponerlo en C:\ 

El nombre de archivo en la celda debe decir: 17LAESA196

Y el archivo en la ruta C:\ se debe llamar 17LAESA196.pdf

La macro funciona, pero debes seguir mis indicaciones.

Sub Abrir_Pdf()
'Por.Dante Amor
    ruta = "C:\"
    arch = ActiveCell.Value
    If arch = "" Then
        MsgBox "Celda vacía"
        Exit Sub
    End If
    If Dir(ruta, vbDirectory) = "" Then
        MsgBox "La ruta no existe"
        Exit Sub
    End If
    arch = arch & ".pdf"
    If Dir(ruta & arch) = "" Then
        MsgBox "El archivo no existe"
        Exit Sub
    End If
    '
    ActiveWorkbook.FollowHyperlink ruta & arch
End Sub

¡Gracias!

funciono yupiiii

gracias Dante, por tan preciado aporte.

R ecuerda cambiar la valoración a la respuesta. :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas