Abrir Pdf desde un botón del formulario

Que sentencia tendría que poner para abrir un Pdf determinado desde un formulario.

1 Respuesta

Respuesta
1

Para abrir cualquier archivo (no sólo un pdf), y siempre y cuando tu sistema operativo tenga un programa predeterminado para abrir el tipo de archivo, necesitas dos elementos:

- La ruta del archivo

- El nombre y la extensión del archivo

Una vez tengas ambos elementos el código que te abriría el pdf, en tu caso, por ejemplo aplicado al evento "Al hacer clic" de un botón de comando sería:

...

Private Sub...

Dim laRuta as string, elArch as string

laRuta="c:\MisPdfs\" 'Aquí iría la ruta del pdf

elArch="Carlos.pdf"

application.followhyperlink  laRuta & elArch

end sub

...

Te lo he puesto en dos variables separadas porque la ruta suele ser más estática que el nombre del archivo. Podrías tenerlo "todo en uno", de manera que

laRuta="c:\MisPdfs\Carlos.pdf"

Con lo que la apertura vendría por

Application. Followhyperlink laRuta

A ver si con esto te sirve.

Hola Neckkito Nck:

te agradezco el aporte pero la verdad no lo acabo de entender, te explico.

este el el formulario que tengo el botón que pone Pdf quisiera que abriera el Pdf correspondiente a cada registro.

esta es la ruta donde tengo los Pdf

D:\Mi carpeta\BDGastos\Archivos Pdf

dendro de Archivos PDF esta otra carpeta

y dentro de 2015 esta otra

como tendría que hacer para conseguirlo.

Un saludo y gracias.

Suponiendo que, en tu formulario, el campo donde indicas el año se llama [Ano] y el campo donde indicas el mes se llama [Mes], y también, por lo que muestras, que tu pdf se llama igual que el mes, tu código debería quedar así:

...

Private Sub...

dim laRuta as string 'Te lo hago todo utilizando una única variable

If isnull(me.[Ano].value) or isnull(me.[Mes].value) then

msgbox "No se puede construir la ruta al archivo",vbCritical,"FALTAN DATOS"

exit sub

end if

laRuta="D:\Mi carpeta\BDGastos\Archivos Pdf\"

laRuta = laRuta & me.[Ano].value & "\"

laRuta=laRuta & me.[Mes].value & ".pdf"

application.followhyperlink laRuta

End sub

...

A ver si con esto te sale.

Hola de nuevo:

Me sale este error

Esta es la ruta

D:\Mi carpeta\BDGastos\Archivos Pdf

que habré estas carpetas

dentro de cada teléfono esta

que por ahora solo 2015 en un futuro mas años

y dentro del ano estas

que tendrá todos los meses del año

Dentro de la carpeta IVI

y dentro esta

estoy echo un lió 

Gracias.

Vamos a ver... te doy mi opinión:

¿Para qué quieres hacer una clasificación de los gastos dentro del árbol de directorios? ¿Acaso vas a trabajar directamente con los directorios? Porque, si precisamente utilizas Access para que te ordene y catalogue la información, estás duplicando tu trabajo.

Yo personalmente buscaría un sistema de nombrado de archivos lo más homogéneo posible, y los metería todos dentro de una sola carpeta. Si no lo haces así, a cada nuevo tipo de gasto que metas, vas a tener que adaptar el código, y lo que estoy viendo es que no estás entendiendo el código, con lo cual difícilmente podrás avanzar con este tema.

Además, al mezclar gastos anuales con gastos mensuales (o de otra periodicidad), no estás realizando una homogeneización de nombres, y eso significa que no te va a servir un código estándar, sino que, de nuevo, tendrás que ir adaptando el código.

Te pongo un ejemplo de cómo podría hacerse, bajo una serie de suposiciones:

Supongo que tu ruta está unificada, y que es "D:\Mi carpeta\BDGastos\Archivos Pdf\2015" (sin teléfonos ni IVI's ni nada. Y el año siguiente la ruta será ""D:\Mi carpeta\BDGastos\Archivos Pdf\2016"")

Supongo que tienes un campo llamado [Periodo] donde le indicas si el gasto es anual o mensual mediante los valores "Anual" / "Mensual"

Supongo que nombras el archivo con el mismo nombre del gasto (el que puedes ver en el formulario), según sea mensual o anual. Por ejemplo:

- IVI (gasto anual) -> IVI2015.pdf

- Teléfono (gasto mensual) -> TelefonoEnero.pdf

Supongo que el campo donde recoges el tipo de gasto se llama [Gasto]

Entonces el código te quedaría así:

...

Private Sub...

dim laRuta as string 

If isnull(me.[Ano].value) or isnull(me.[Mes].value) or isnull(me.Gasto.value) or isnull (me.[Periodo].value) then

msgbox "No se puede construir la ruta al archivo",vbCritical,"FALTAN DATOS"

exit sub

end if

laRuta="D:\Mi carpeta\BDGastos\Archivos Pdf\"

laRuta = laRuta & me.[Ano].value & "\"

If me.periodo.value="Mensual" then

laRuta=laRuta & me.[Gasto].value & me.[Mes].value & ".pdf"

Else

laRuta=laRuta & me.[Gasto].value & me.[Ano].value & ".pdf"

End if

application.followhyperlink laRuta

End sub

...

Si no buscas esta homogeneización tendrías que escribir una línea de código para cada línea de registro si cambias el tipo de gasto, y en cuanto añadieras un gasto nuevo tendrías que volver a programar para incluirlo en tu código. Eso es de locos.

Suerte.

Neckkito

Hola de nuevo:

este el error que da

y esta es la ruta para el archivo pdf con dichos archivos

no le encuero el error si no te importa y me puedes ayudar

un saludo.

Perdona esta es la libia que da error

Revisa los nombres de los campos del formulario para ver si coinciden exactamente con los del código. Para saber el nombre de un control sacas sus propiedades -> Pestaña Otras -> Nombre.

En concreto:

- [Ano]

- [Mes]

- [Gasto]

- [Periodo]

Si en tu formulario, por ejemplo, el campo que guarda el año se llama [Año] pues cámbialo en el código (en todas las ocurrencias), sustituyendo [Ano] por [Año]. Y así con todos los que encuentres diferentes.

Te voy a dar la lata perdona

esto me sale ahora

Pásame tu BD a neckkito (ARROBA) gmail (PUNTO) com y acabaremos antes. Dime en mail el nombre del formulario que estás utilizando.

Ya te he respondido al mail. El error estaba en el nombre de uno de los campos que se utilizan en el código en relación al nombre que tenía en el formulario. En el mail te lo explico con más detalle, pero básicamente el problema era ese.

sigue dando problemas

ahora es esto

esta es la ruta donde están los pdf

me queda muchísimo que aprender

perdona si soy un pesado

un saludo y muchas gracias.

Vamos a ver, Carlos:

El primer mensaje te saldrá siempre porque es un mensaje de sistema. Que yo sepa no hay manera de quitarlo. Así que le das a aceptar y listos.

El programa funciona perfectamente, pues lo he testeado.

Te ruego ahora que leas lo que te voy a escribir muy atentamente, y que no sólo lo leas sino que lo entiendas.

Coge un gasto cualquiera, por ejemplo, el mismo Teléfono. Y haz la siguiente reflexión:

¿Es un gasto mensual? Sí

Si es un gasto mensual depende de un mes

Si depende de un mes debes indicar el mes.

Luego tu nombre de archivo debe quedarte, si por ejemplo es el mes de enero:

TelefonoEnero.pdf

Pero también debes comprobar que, cuando introduces el dato, el campo [Pago] indique que es mensual.

El supuesto error que me muestras no es un error de código, sino de introducción de datos. Significa que, en el registro que estás intentando ver, tienes el pago como anual, cuando no es correcto.

Coge otro gasto, el IVI por ejemplo:

¿Es mensual? No. Entonces sólo depende del año.

El nombre de archivo te debe quedar IVI2015.pdf

Pero, además, la periodicidad del gasto (tu campo Pago) debe indicar anual, porque si indica mensual volvemos a estar en que el error viene por la introducción de datos, no por el código.

Con esto revisa tus datos y corrígelos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas