Abrir Pdf desde un botón del formulario
Que sentencia tendría que poner para abrir un Pdf determinado desde un formulario.
1 Respuesta
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.
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.
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.
- Compartir respuesta