Como Enviar Informes vía e-mail

Tengo alrededor de 3 informes alimentados por dos formularios.

Quisiera agregar un botón en los formularios para enviar los informes del registro actual vía e-mail como un pdf de ser posible.

Es decir, estoy en el registro 1 de "Ismael Isma", y quiero enviar el informe 2 "Horas trabajadas", un botón que me deje seleccionar entre los 3 informes que tengo el que quiero enviar y enviarlo ha determinado e-mail.

¿Es posible hacer esto?

1 Respuesta

Respuesta
2

Si el informe tiene un cuadro de texto que lo identifique desde el formulario, pon un botón de comando y en sus Propiedades-Eventos-Al hacer clic crea un procedimiento de evento y entre Privte Sub y End Sub escribe:

Docmd.openreport"Nombredelinforme",acpreview,,"idloquesea=forms!nombredelformulario!idloquesea"

DoCmd.SendObject acSendreport, "nombredelinforme", "PDFFormat(*.pdf)", "'" & [email] & "'", , , "Envio de Certificado", "Estimado amigo: Te mando recuerdos y un certificado", True

Donde [email] es el nombre del cuadro de texto donde tienes el email en forma ramó[email protected]

Envio de certificado es el Asunto del mensaje

Estimado amigo... es el cuerpo del mensaje

Lo de True es por si quieres comprobar que todos los datos están bien, si te fías pon false

Hola Icue

Disculpa pero me perdí en la primera línea "Si el informe tiene un cuadro de texto que lo identifique desde el formulario," podrías por favor explicarme a que te refieres con eso.

Gracias

Quería decir que el informe está "cerrado", por tanto para abrirlo en un registro en concreto tienes que tener en el informe un campo que lo puedas "identificar" desde el formulario. Por ejemplo, supongamos que en el formulario, tienes un campo Idcliente, Nombrecliente,, DNI, etc., que se repita en el informe. Entonces puedes poner

Docmd.openreport"nombredelinforme".acpreview,,"Nombrecliente=forms!nombredelformulario!nombrecliente"

No es necesario que los cuadro de texto se llamen exactamente igual, sino que los datos que contengan se repitan en el informe.

Por ejemplo, su pongamos que en el formulario tienes un cuadro de texto donde se guarda el numero de pasaporte, y se llama Numpas, y en el informe tienes otro cuadro de texto llamado Amigo donde también se guarda el numero de pasaporte.

Puedes poner

docmd.openreport"nombredelinforme",acpreview,,"amigo=Forms!nombredelformulario!numpas"

Ya te entendí.

De hecho, así fue que programe botones para poder imprimir informes de un solo registro desde el formulario.

Desglozando el código por partes:

Email es un cuadro de texto donde ingreso el mail a donde quiero que lo envíe.

Pregunta: El asunto y cuerpo del mensaje también podría ingresarlos en cuadro de texto y que el código los identifique?

Y para finalizar: Es la única manera para poder realizar esto? 

Veras, tengo 3 informes distintos para cada registro y me gustaría que pudiese con un solo botón seleccionar entre los 3 informes y no programar un botón para cada informe y enviarlo.

Podría modificarse de alguna manera para realizar esto?

Gracias por tu pronta respuesta.

Vamos a suponer que en el formulario, llamado Cliente, tienes un cuadro combinado, o de lista llamado ElegirInforme, donde te aparecen los posible informes que puedes hacer. También tienes un cuadro de texto Email, otro llamado Asunto donde escribes eso y otro llamado Mensaje.

Crea un botón de comando y e sus propiedades-eventos-al hacer clic entre Private Sub y End Sub escribe

DoCmd.OpenReport Me.Informe, acPreview, , "Idloquesea=forms!cliente!idloquesea"
DoCmd.SendObject acSendReport, Me.Informe, "PDFFormat(*.pdf)", "'" & [email] & "'", , , Me.[Asunto], Me.[Mensaje], True

Así, cuando hayas elegido un informe y pulses el botón, te abrirá el informe elegido, en el registro que le indique el criterio y por otro lado te enviará ese mismo informe con el email, asunto y mensaje que hayas escrito en el formulario.

Un saludo, y dale un recuerdo mío a Carlos... Vives

Gracia Icue, en tanto tenga un poco de tiempo para dedicarle pobraré y te comentaré que tal me ha ido.

Saludos

Hola Icue, ya he sacado un poco de tiempo y cree el botón y demás.

Tengo un inconveniente, al crear el cuadro combinado en donde me aparecen los posible informes que puedo hacer no sé como hacerlo. Es decir, no se como hacer que en la lista del cuadro combinado me aparezcan los informes que quiero imprimir. Imagino que es algó muy simple pero no le he encontrado la solución, lo he intentado y al abrir el formulario el cuadro esta en blanco y no me muestra la lista.

Otra cosa, mientras espero si puedes ayudarme con el cuadro combinado o la lista de valores en donde me muestre los informes que quiera seleccionar y enviar, lo he dejado directo, y ha funcionado creo, pero cuando le doy en enviar, me arroja el siguiente mensaje:

" Debe crear un perfil de Microsoft Outlook.En Microsoft Windows, vaya al panel de control y abra Correo. Haga clic en Mostrar Perfiles y seleccione agregar"

Eso eso necesario? o hay alguna forma de saltarse eso y que solo envie y ya.

Te estoy escribiendo desde el móvil. Ahora mismo estoy de turismo en Córdoba. Mañana por la tarde, cuando esté delante del ordenador te contesto y te mando unas imágenes.

Access por defecto trabaja con Outlook, por eso vienen en el mismo paquete. Aunque la cuenta la tengas en Hotmail, Gmail, etc., puedes crear una cuenta en Outlook. Yo personalmente el correo lo recibo vía internet en ONO, pero tengo creada una cuenta en Outlook. Lo único que tienes que decirle es tu dirección de correo y la clave con la que entras en tu servidor de correo.

Pero si no quieres yo te aconsejaría

Que en vez de Docmd. Sendobject

Pusieras

DoCmd. OutputTo acOutputReport,, acFormatPDF

O el formato que quieras

Así, se abrirá un "explorador" para que le digas en que carpeta y con que nombre quieres guardarlo. Escribes por ejemplo ClientePepe.pdf y te lo guarda en la carpeta elegida. Luego te vas a tu servidor de correo y se lo adjuntas.

Vale, en la compañía se manejan cuentas Outlook, pero en el sistema no todos tienen acceso a Microsoft Outlook por lo cual quería saber si podría saltarse eso para saltarse la solicitud de permisos para que lo dejen usar.

Podrías ayudarme con lo de los cuadros combinados? He tratado de muchas maneras y he buscado pero no logro como hacer para que al crear el cuadro combinado o la lista de valores esta despliegue los formularios que quiero enviar.

Muchas Gracias, y disculpa interrumpir tu viaje. 

Vamos por partes

Para el combinado

Detrás de facturas van unas comillas

Y ahí es donde pones

Select case cuadro_combinado67

case is="pedidos"

docmd......

Case is="clientes"

docmd...

.

.

End select

Con respecto a lo del email, no entiendo lo de "saltarse eso", tendréis que usar algún servidor de correo.

Échale un vistazo al enlace, es lo único que he visto que te pueda servir

http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/codigo/95-ejemplos-explicados/ejemplos-de-codigo/142-y-tres-de-mail 

Hola Icue, ya el cuadro combinado me arroja la lista de valores pero ahora tengo otro problema.

Agregue el cuadro combinado y en procedimiento de evento afterupdate el código me quedo así:

Private Sub Cuadro_combinado498_AfterUpdate()
Select Case Cuadro_combinado498

Case Is = "Persona"

DoCmd.OpenReport "Persona", acPreview, , "Cédula=forms!Contratación!Cédula"

Case Is = "HUR Proceso"

DoCmd.OpenReport "HUR Proceso", acPreview, , "Cédula=forms!Contratación!Cédula"
End Select
End Sub

No me arroja ningún tipo de error.

En el botón de enviar el código me ha quedado así:

Private Sub Comando495_Click()
DoCmd.OpenReport Me.Informe, acPreview, , "Cédula=forms!Contratación!Cédula"
DoCmd.SendObject acSendReport, Me.Informe, "PDFFormat(*.pdf)", "'" & [Email] & "'", , , Me.[Asunto], Me.[Mensaje], True
End Sub

Específicamente me arroja error en el "Me.Informe" Error de compilación -No se encontró el método o el dato miembro"

No se que estoy haciendo mal. Lo correcto sería que ingresara en el campo "Mensaje", "Asunto" y "Email" lo que corresponda, luego ir al cuadro combinado seleccionar entre el informe "Persona" y el informe "HUR Proceso" y luego darle al botón enviar y ya.

Porque bueno haciéndolo directamente con dos botones para enviar los informes no seria necesario el cuadro combinado pero eso es lo que no quiero exactamente.

Por favor si puedes revisar y darme las respectivas correcciones para lograr lo que quiero.

Muchas gracias.

Pues claro que no te funciona. Me.informe no significa nada, no hay ningún cuadro de texto en el formulario que se llame informe. El nombre está en el cuadro combinado. Yo te decía que en el evento después de actualizar del combinado pusieras el código

Private Sub Cuadro_combinado498_AfterUpdate(Cancel As Integer)
DoCmd.OpenReport Me.Cuadro_combinado498, acPreview
DoCmd.SendObject acSendReport, Me.Cuadro_combinado498, "PDFFormat(*.pdf)", "'" & [email] & "'", , , Me.[Asunto], Me.[Mensaje], True
End Sub

He pulsado sin querer el botón de enviar. Te tiene que quedar así

Ya me he enredado más.

*¿El botón de enviar ya no lo usaría?

¿El código del cuadro combinado quedaría así?

Select Case Cuadro_combinado498
Case Is = "Persona"

DoCmd.OpenReport "Persona", acPreview, , "Cédula=forms!Contratación!Cédula"

Case Is = "HUR Proceso"

DoCmd.OpenReport "HUR Proceso", acPreview, , "Cédula=forms!Contratación!Cédula"
End Select
Private Sub Cuadro_combinado498_AfterUpdate(Cancel As Integer)

DoCmd.OpenReport Me.Cuadro_combinado498, acPreview
DoCmd.SendObject acSendReport, Me.Cuadro_combinado498, "PDFFormat(*.pdf)", "'" & [Email] & "'", , , Me.[Asunto], Me.[Mensaje], True
End Sub

Al seleccionar en la lista de valores me dice:

"La expresión después de actualizar que ha especificado como valor de la propiedad de evento produjo el Error el procedimiento externo no es válido"

Disculpa, pero me he hecho un lio con esto que imagino debe ser muy simple.

Gracias por tu pronta respuesta

Vamos a ver si lo dejamos claro. Olvídate del botón, no sirve para nada. En las propiedades del cuadro combinado498

Y en la solapa Eventos

Y en el código pon

Ni más ni menos. Así cuando elijas un informe en el combinado, automáticamente te abre el informe elegido y te lo envía.

Muchísimas Gracias, perfecto.

Miraré el ejemplo que me compartiste para usar cuentas G-mail.

Muchísimas Gracias de nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas