Access: Exportar un informe a PDF

Quiero crear un código, para que cada vez que se actualize un formulario, exporte un informe en formato pdf a una ruta especificada. Lo tengo listo, pero me da error 2501 "La acción OutputTo se canceló"

Yo creo que se debe a que el fichero PDF ya existe en esa ruta, pero lo que yo necesito es que lo sustituya:

Private Sub Form_AfterUpdate()
Dim Var_Subcarpeta As String
Dim Nombre_Fichero As String
Dim Ruta_Fichero As String
Var_Subcarpeta = Me![Nombre]
DoCmd.RunCommand acCmdSaveRecord
Nombre_Fichero = "Informe Comercial.pdf"
Ruta_Fichero = "C:\Users\HOME\Google Drive\Informes Comerciales\" & Var_Subcarpeta
DoCmd.SetWarnings False 'Desactiva el mensaje de ACCESS de que se van a agregar registros
DoCmd. OutputTo acOutputReport, "Informe Comercial", "PDFFormat(*.pdf)", Ruta_Fichero, True, "", 0, acExportQualityPrint
DoCmd.SetWarnings True  'Vuelve a activar los mensajes
End Sub

Por otro lado, si os animáis a volveros un poco locos, os amplio más mi idea.

Se trata de archivar en DRIVE un informe para cada agente comercial, dentro de una carpeta con su nombre (le daré acceso a cada comercial a su carpeta). La idea es que cada vez varíe la información del formulario, se actualice automáticamente el pdf, para que el comercial tenga acceso siempre a la información actualizada.

He puesto el código en el evento afterupdate del formulario principal, ¿creéis qué debería añadirlo en algún otro evento?

Otro problema que tengo es que si la carpeta (con el nombre del comercial) no existe la debería crear antes de exportar el pdf.

1 respuesta

Respuesta
3

Por lo que veo, en el código te falta indicarle, al DoCmd. OutputTo, el nombre del fichero. Tu creas la ruta por un lado en una variable de texto, el nombre en otra variable, pero luego solo le pasas la ruta:

DoCmd. OutputTo acOutputReport, "Informe Comercial", "PDFFormat(*.pdf)", Ruta_Fichero, True...

Prueba a ponerlo así:

DoCmd. OutputTo acOutputReport, "Informe Comercial", "PDFFormat(*.pdf)", Ruta_Fichero & "\" & Nombre_Fichero, True...

Para comprobar si la carpeta existe, puedes usar la función Dir() y si no existe, crearla con MkDir, por ejemplo: If Dir(Ruta_Fichero,vbArchive)="" Then MkDir Ruta_Fichero

Saludos


Muchas gracias, ya lo tengo en marcha, pero me gustaría, si es posible, que el pdf se creara en segundo plano, sin que se abra una vez creado, ¿es posible?

Un saludo

Quita el True que va con el outputto y listo.

¿Quitar el true, o convertirlo en false?

Prueba: el True indica que quieres que se abra el archivo al acabar de exportar, pero no recuerdo si el false es la opción por defecto (lo puedes ver en la ayuda del outputto)

¡Gracias! 

Acabo de comprobarlo, y False es la opción por defecto, así que daría igual.

Si te sirvió la respuesta, no dejes de valorarla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas