Macro para abrir pdf desde excel

Tengo un excel con macros, una de las cuales imprime informes en pdf dentro de:

"C:/Informes"

Quiero crear una macro que me abra un cuadro de diálogo, en el cual, indicando el nombre del archivo, me abra el pdf.

O, si eso no es posible, al menos que me lleve a dicha carpeta, para que allí el usuario pueda seleccionar el archivo ya fuera de la macro.

Creía que iba a ser sencillo pero me está volviendo loco...

4 Respuestas

Respuesta
4

Te mando un ejemplo:

En esta macro hacemos lo siguiente:

En la primera línea fijamos una carpeta de trabajo para siempre buscar en esa

En la segunda preguntamos al usuario que introduzca el nombre del archivo, sin extensión

Y en la tercera fila lanzamos el programa para abrir el pdf. En esta última línea tendrás que cambiar el path del programa ya que en mi caso es el que figura en la macro. Tu tienes que buscar donde está el ejecutabe de tu reader para que funcione la macro

Sub prueba()
ChDir "C:\Users\Luis\datos\"
archivo = InputBox("introduzca nombre archivo")
Shell "C:\Program Files (x86)\Nuance\PDF Reader\bin\pdfreader.exe " & archivo & ".pdf"
End Sub

no olvides finalizar la consulta

Hola Luis!

Tengo 2 cuestiones:

1º. ¿No hay la posibilidad de visualizar los archivos existentes en la carpeta seleccionada? Lo digo porque yo de antemano no conozco los nombres de los archivos.

2º ¿No existe la posibilidad de que haya un path genérico del Adobe pdf para abrir el archivo? El excel que estoy preparando se utilizará en varios ordenadores de distintos usuarios. Y lo hacemos así, habría que personalizar la macro para cada usuario.

Muchas gracias de antemano.

Para la segunda cuestión no tengo respuesta, ten en cuenta que en cada ordenador puede haber una versión distinta de dicha programa. Fíjate en mi path seguro que en otro ordenador es distinto.

En cuanto a la primera te preparo la solución y te lo mando en cuanto pueda

Ok.

Muchas gracias.

Esta sería la macro:

Sub prueba()
on error goto salida
ChDir "C:\Users\Luis\datos\"
archivo = application.getopenfilename
if archivo = false then exit sub
Shell "C:\Program Files (x86)\Nuance\PDF Reader\bin\pdfreader.exe " & archivo
exit sub
salida:
msgbox "ha ocurrido un error, vuelva a intentarlo"
End Sub

no olvides finalizar la cónsulta

Muchas gracias Luis.

Funciona correctísimamente.

Sin embargo, no quiero incluir una macro que tenga que personalizar depende el PC con el que trabaje, así que me olvidaré de ello.

Un saludo.

Respuesta
2

¿Has probado con algo asi?

Sub Macro1()
Dim CarpetaInformes As String
CarpetaInformes = "C:\Informes"
Call Shell("explorer.exe " & CarpetaInformes, vbNormalFocus)
End Sub

Respuesta
1

Muchísimas gracias, pero creo que lo que yo busco no se puede hacer, ya que según parece hay que personalizar continuamente el path de la aplicación que abre los PDF.

Un saludo y buen finde!

Respuesta

Veo que esta consulta es de hace años, pero colocaré la solución para las futuras generaciones ja ja:

Declare Function ShellExecute Lib "shell32.dll" _

Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Sub Abrircorreo()
Dim Archivo As String
Dim Ruta As String

Archivo = correo.msg

'--------------------------------------------------------------------------------------------------------------
'ABRIR ARCHIVO ADJUNTO POR ADMINPRO
Ruta = "\\grupo.local\" & Archivo
Call ShellExecute(hwnd, "Open", Ruta, "", "", 3)
'--------------------------------------------------------------------------------------------------------------

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas