Macro para escribir enviado en una hoja de calculo al enviar un correo en outlook

Me gustaría saber si hay alguna manera de que si yo presiono el botón enviar en una ventana de outlook, se escriba enviado en una celda de una hoja de calculo, es decir, una especie de confirmación de envio que se vea reflejada en una hoja de calculo.

1 Respuesta

Respuesta
1

[Hola

Sí, si es posible que al enviar desde Outlook, se haga "algo" en Excel pero ¿qué tan útil puede ser? ¿Sería en un archivo nuevo o uno ya existente? ¿La idea es que el archivo se quede abierto o que guarde el dato y se cierre? etc.

Abraham Valencia

¡Gracias por la respuesta!, la idea del programa es enviar varios correos pero de uno en uno ya que todos tienen distintos contactos y archivos adjuntos así que primero los desplegó mediante .display y revisarlos si todo esta correcto y después presionar enviar, entonces me gustaría que cada vez que yo presione enviar se escriba en una celda por ejemplo "enviado", para así poder iniciar el programa en cualquier momento y saber cuales ya se enviaron. Saludos!!!!

Es decir, usando una analogía, el correo desplegado debería de funcionar como un msgbox que al presionar cierto botón escriba enviar en una celda, solo que en este caso ese botón seria el enviar el correo de outlook. Saludos y gracias.

Ya no me queda claro si estás usando el VBA de Excel o el de Outlook. Asumiendo que es el de Excel, basta que después del "Display" pues envíes los datos al mismo Excel (de ser el caso).

Abraham Valencia

Saludos, estoy usando el VBA de excel. Disculpa, pero como haría eso de enviar los datos al excel?, de antemano muchas gracias

No has dado muchos datos pero algo tan simple como:

Worksheets("Nombre_de_tu_Hoja").Range("A1").Value = "Enviado"

Y así para cualquier otros valor/hoja/celda.

Abraham Valencia

Mi código es el siguiente:

Set olapp = New Outlook.Application
    Set olmail = olapp.CreateItem(olMailItem)
    olapp.Session.Logon
    With olmail
        .To = contacto1;contacto2;....
        .CC = ""
        .Subject = "asunto"
        .Body = "cuerpo"
        For i = 1 To "numero de documentos por cliente"
        .Attachments.Add "Archivo i"
        Next i
        .Display
        "Es aquí donde se muestra el correo y verifico si los
 datos son correcto"
        End With
        "Es a partir de aquí donde me gustaría que si yo presiono enviar 
 el correo, entonces en las celda M1 se escribiera enviado, 
 pero exclusivamente si yo presiono enviado"

Muchas gracias por su tiempo.

[Hola

Ya te entendí mucho mejor. Uno de los dilemas de usar el método "Display" del objeto "MailItem" es que Excel pierde el control y éste queda "en manos" de la aplicación Microsoft Outlook con lo que si cancelas/cierras el envío o finalmente sí lo envías, pues no hay forma de que el VBA de Excel lo sepa de modo práctico/fácil.

Una forma es que habilites las macros de Outlook de manera permanente y que uses el evento "ItemSend" que detecta cualquier envío de mensajes. En dicho evento podrías enviar los datos necesarios a Excel ¿el dilema? Cuando uses para otras cosas y/o abras el Outlook para enviar cualquier mensaje, pues querrá/intentará enviar el dato a Excel. Podrías evitarlo enviando algún dato/palabra de "Confirmación" que el Outlook pueda leer para confirmar si corresponde enviar la información a Excel pero tendrías que tener un archivo más (*.txt, *.ini, Access u otro) o usar el registro de Windows para almacenar/borrar dicha información, lo que evidentemente no es tan simple. Tendrías que comenzar leer sobre esos temas y programarlo todo.

Mi sincera recomendación es que uses el método "Send" y no "display"

Comentas

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas