una reunion office grupo compartido como calendario agendar excel excel-vba outlook

excel - reunion - Clase de evento de envío de Outlook



calendario de grupo office 365 (1)


Fondo:
Hace un tiempo, descubrí un módulo de clase para obtener eventos de Outlook, específicamente, como sugiere el título, lo estoy usando para captar el elemento de enviar evento, para saber si realmente fue enviado o no. Este es el módulo de la clase en sí. No recuerdo cómo solía llamarlo (lo guardé para referencias posteriores, pero borré la forma de llamarlo en mi sub principal).

Option Explicit Public WithEvents itm As Outlook.MailItem Private Sub itm_Send(Cancel As Boolean) Dim blnSent As Boolean On Error Resume Next blnSent = itm.Sent If Err.Number = 0 Then Debug.Print "Email not sent" Else Debug.Print "Email sent") End If End Sub

Problema:
Olvidé cómo debería llamarlo en mi sub que está enviando el correo electrónico. He intentado las siguientes declaraciones en la parte superior:

Dim itmevt As New CMailItemEvents Public EmailToSend As Outlook.MailItem

Entonces en mi sub que está enviando el correo electrónico:

Set itmevt.itm = EmailToSend

Sin embargo, no puedo obtener el evento de envío activado en la clase.

Preguntás especificas:
1. ¿Cómo llamo a la clase correctamente?
2. ¿Cómo puedo enviar / no enviar el valor de manera eficiente (me gustaría escribirlo en una celda para su posterior análisis -enviada / no enviada-) Pensé en analizar una función pública, que podría recuperar el valor de el submarino que lo llama, pero, no creo que sea el mejor enfoque


Por lo que pude entrenar esta clase es un tanto falsa. El uso correcto sería Set itmevt.itm = OutApp.CreateItem(0) . El problema radica en utilizar el evento Enviar para probar si el elemento se envió o no. Tenga en cuenta que el parámetro Cancelar del evento. Establecer Cancel = True evita que se envíe el correo electrónico. Eso nos dice que si el correo electrónico no se envía hasta que se complete este evento. Enviado siempre devolverá falso y nunca causará un error del evento Enviar.

Por otro lado, si probamos para ver MailItem.Sent después de que enviemos el correo electrónico, arrojará un mensaje. The item has been moved or deleted. error.

Sabiendo que podemos crear una función que enviará nuestros correos electrónicos que devolverán True si el correo electrónico fue enviado y False si no lo fue.

Function SendEmail(addressTo As String, addressCC As String, Subject As String, HTMLBody As String) As Boolean Dim OutApp As Object Set OutApp = CreateObject("Outlook.Application") With OutApp.CreateItem(0) .To = addressTo .CC = addressCC ''OutMail.BCC = "" .Subject = Subject .HTMLBody = HTMLBody .Send On Error Resume Next Call .Sent SendEmail = Err.Number <> 0 If Err.Number = 0 Then Debug.Print "Email not sent" Else Debug.Print "Email sent" End If On Error GoTo 0 End With Set OutApp = Nothing End Function