Enviar un informe de access 2007 por correo

Intento utilizar un botón de un formulario para enviar un informe llamado "su ticket" en formato pdf por correo sin tener que usar outlook (de forma utomatica), al destinatario activo en el formulario, en el formulario están todos los los datos del destinatario incluido el email.
El formulario se llama Facturas
Y si es posible también usar una plantilla.docx como cuerpo del mensaje

2 respuestas

Respuesta
2
Vamos por partes:
Para poder enviar el informe en formato pdf debes tener instalado el complemento de pdf/xps para office. Como no sé si lo tienes puedes echar un vistazo a esta página, bajártelo e instalarlo:
http://www.microsoft.com/downloads/es-es/details.aspx?familyid=4d951911-3e7e-4ae6-b059-a2e79ed87041&displaylang=es
Voy a suponer que en el formulario tienes los siguientes campos:
[destinatario]
[asunto]
[cuerpo]
Suponiendo que ya tienes instalado el complemento que te comentaba lo que debes hacer es lo siguiente:
1.- Creas un botón en el formulario. Sacas sus propiedades y te vas a la pestaña Eventos->Al hacer click. Verás que hay un pequeño botón con puntos suspensivos. Si haces click sobre él se te abrirá una nueva ventana. Le dices que quieres generar código.
2.- Se te abrirá el editor de VB con dos líneas por defecto (Private Sub... y End Sub). No debes tocarlas. Entre ellas escribes el siguiente código:
...
Private Sub...
Dim nombreInforme As String
Dim destinatario As String
Dim asunto As String
Dim cuerpo As String
nombreInforme = "su ticket"
destinatario = Me.[destinatario].Value
asunto = Me.[asunto].Value
cuerpo = Me.[cuerpo].Value
DoCmd.SendObject acSendReport, nombreInforme, "PDF", destinatario, , , asunto, cuerpo, False
End Sub
...
Por ejemplo, si no tuvieras el campo asunto en el formulario, deberías sustituir la línea
asunto = Me.[asunto].Value
Por
Asunto = "Este es el texto que debes poner en el asunto"
Es decir, el mensaje de asunto que quieras, pero siempre entre comillas.
Lo mismo para la variable <cuerpo>.
Más cosas:
- El último argumento del DoCmd es False. Eso significa que te envía el mensaje directamente. Si lo cambias por True te mostrará el mensaje antes de enviarlo, por si quieres modificar alguna cosa.
- En el código verás que hay unos argumentos que no he puesto, pero que he señalado su lugar con comas (hay que hacerlo así, de todas maneras). Por si te interesa el primer espacio es para un destinatario en copia y el segundo para un destinatario oculto. Es decir, que si quisieras usarlos esa línea de código te quedaría más o menos así:
DoCmd. SendObject acSendReport, nombreInforme, "PDF", destinatario, copia, copiaoculto, asunto, cuerpo, False
Finalmente, lo que me comentas de utilizar una plantilla docx lamento decirte que no puede hacerse. Efectivamente sí se puede utilizar una plantilla, pero el mensaje no puede ser pdf, sino que debe ser html.
Y poca cosa más. Ya me dirás qué tal te ha ido.
Excelente el tiempo de respuesta me sorprendió súper rápido, y la respuesta como dice Mourinho "Fantástica", funciona correctamente, de verdad muchas gracias te debo una.
Aparte de eso me quedo una duda, solo por curiosidad ¿Por qué si el formato del archivo adjunto es PDF no se puede poner una plantilla para cuerpo del mensaje? ¿No son cosas diferentes?
Muchas gracias
Respuesta

Neckkito Nck

Hice lo que explicas para enviar un informe pero, me sale un error que no encuentra el correo y solo me ale un 1, el campo de destinatario lo lleno con un combobox que carga el correo de una taba, cuando le doy clic solo me sale un numero 1 o 2.

A logre hacer que me aparezca el correo, había un error en la tabla donde se registraba los correos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas