Guardar informe en pdf en ruta determinada

Tengo el siguiente código:

Private Sub btnImprimir_Click()

Dim IdPrincipal As Integer

IdPrincipal = Me.IdPrincipal
DoCmd.OpenReport "inf_PresupuestoClientes", acPreview, , "idPrincipal=forms!Presupuestos!idPrincipal"

End Sub

Este código en el evento click de un botón de un formulario me da la vista preliminar del informe del presupuesto que yo estoy realizando en ese momento, informe dado por el IdPrincipal, lo que quiero es a la vez que lo envío a vista preliminar, poder guardarlo en pdf en una carpeta especifica que tengo. Ahora lo hago de forma manual.

1 respuesta

Respuesta
1

Javier: Has de utilizar el Método DoCmd. OutputTo

https://msdn.microsoft.com/es-es/vba/access-vba/articles/docmd-outputto-method-access 

Y la línea de Export te debe de quedar algo así.

DoCmd. OutputTo acOutputReport, NombreInforme, acFormatPDF, RutaYFicheroPDF, False,,, acExportQualityPrint

Si se quiere visualizar el PDF >> Poner True en lugar de False.

En tu caso el NombreInforme creo que es >>"inf_PresupuestoClientes"

Y la RutaYFicheroPDF será el directorio completo incluyendo el nombre del PDF

Un saludo >> Jacinto

ok, lo que no veo es lo del nombre de pdf, es decir el Fichero PDF

Al dar al clik al button en su evento click, lo que me abre es el informe en vista preliminar, pero no tengo todavía creado el archivo pdf, creo yo, si no estoy confundido, que seguro que lo estoy, pero no lo veo 

Javier: Siempre es bueno hacer ensayos aunque se cometan errores.

Al final tu código ha de quedar aproximadamente así

Private Sub btnImprimir_Click()
Dim IdPrincipal As Integer
IdPrincipal = Me.IdPrincipal
DoCmd.OpenReport "inf_PresupuestoClientes", acPreview, , "idPrincipal=forms!Presupuestos!idPrincipal"
DoCmd. OutputTo acOutputReport, "inf_PresupuestoClientes", acFormatPDF, RutaYFicheroPDF, False,,, acExportQualityPrint
End Sub

Si quieres te puedes ahorrar la parte final >> , False,,, acExportQualityPrint

Mira las Opciones en el enlace que te envié.

Donde pongo RutaYFicheroPDF tal como te comentaba arriba has de poner el directorio (Carpeta) donde vas a guardar el PDF y su nombre >> Ejemplo

"C:\CarpetaJavier\LosFicherosPDF\DelAño5000\PresupuestoClientes.pdf"

Un saludo >> Jacinto

Javier: Te he enviado una ampliación de respuesta y no la cita aquí. Dime por favor si la has recibido. Saludos >> Jacinto

Hola de Nuevo, ya probé el código inicial enviado y estudie e lenlace y ocurre lo siguiente:

Hice una prueba en una carpeta en el escritorio, carpeta que se llama presupuesto donde tengo también la BBDD, pero no me guarda el pdf de forma automática

IdPrincipal = Me.IdPrincipal

DoCmd.OpenReport "inf_PresupuestoClientes", acViewNormal, , "idPrincipal=forms!Presupuestos!idPrincipal"

'DoCmd. OutputTo acOutputReport, NombreInforme, acFormatPDF, RutaYFicheroPDF, False,,, acExportQualityPrint

' abro el informe en pdf

DoCmd.OutputTo acOutputReport, "inf_PresupuestoClientes", acFormatPDF, "C:\Users\Javi\Desktop\Presupuestos.pdf\", True, , , acExportQualityPrint

Lo puse en TRUE porque quiero verlo antes, aunque lo cambien a FALSE para comprobar que no era por esto y sigue sin guardarlo, ¿qué sigo haciendo mal?

Javier: Creo que terminas de forma inadecuada poniendo una contrabarra, pero si quieres guardar en el PDF en la misma carpeta que tienes la Base de Datos sería>>

DoCmd. OutputTo acOutputReport, "inf_PresupuestoClientes", acFormatPDF, Application. CurrentProject. Path & "Presupuestos.pdf", True,,, acExportQualityPrint

Saludos >> Jacinto

Hola de nuevo he corregido el error de la barra al final de código, y he sacado nuevamente la base de datos de la carpeta de los archivos de los informes, aun así no me los guarda en la carpeta, el código finalmente es:

Dim IdPrincipal As Integer


IdPrincipal = Me.IdPrincipal

DoCmd.OpenReport "inf_PresupuestoClientes", acViewNormal, , "idPrincipal=forms!Presupuestos!idPrincipal"

'DoCmd. OutputTo acOutputReport, NombreInforme, acFormatPDF, RutaYFicheroPDF, False,,, acExportQualityPrint

' abro el informe en pdf

DoCmd.OutputTo acOutputReport, "inf_PresupuestoClientes", acFormatPDF, "C:Users\Javi\Desktop\Presupuestos.pdf", True, , , acExportQualityPrint

Pero ya digo que se queda abierto, porque he puesto True, ¿pero en la carpeta de destino no hay nada?

Alguna idea

Javier: Sinceramente lo ignoro, pero prueba con ésta línea que te mencionaba arriba, que por cierto tiene un error porque le falta una contrabarra.

La que te citaba

DoCmd. OutputTo acOutputReport, "inf_PresupuestoClientes", acFormatPDF, Application. CurrentProject. Path & "Presupuestos.pdf", True,,, acExportQualityPrint

La correcta

DoCmd. OutputTo acOutputReport, "inf_PresupuestoClientes", acFormatPDF, Application. CurrentProject. Path & "\Presupuestos.pdf", True,,, acExportQualityPrint

Entonces mira en la carpeta donde está la BD. Si no te lo guarda seguimos comentando, porque al no ver la estructura de carpetas que tienes, no me puedo hacer idea.

Haz otra prueba en una carpeta que tengas en C: Mis saludos >> Jacinto

Hola de nuevo,  he realizado lo que me dices, es decir, en la misma carpeta que la base de datos, y si la guarda, cuando intento que lo guarde con el otro código fuera de la carpeta no lo guarda. Es posible hacer la copia fuera de la carpeta de la bases de datos?

Javier: Por supuesto que se puede hacer y de hecho en la mayoria de las ocasiones, personalmente lo hago en otra carpeta.

Si la dirección que le proporcionas es la adecuada, no debe haber ningún problema, pero ahí no te puedo ayudar (creo que alguien ajeno tampoco), porque solo tu conoces tu distribución de Carpetas. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas