Macro para abrir outlook y enviar mail automático desde Excel dada alguna condición cumplida.

Quiero saber si me pueden ayudar con el código para una Macro que permita abrir outlook 2007 y enviar un mail automático desde Excel 2007 dada alguna condición cumplida.

Me explico,

En mi trabajo tengo una lista de tareas asignadas a ciertas personas y sus respectivas direcciones de correos. Cada tarea tiene una fecha de vencimiento, lo que yo necesito es que una vez que yo abro el archivo de excel (y teniendo outlook abierto previamente) si alguna tarea tiene su fecha vencida automáticamente outlook envíe un mail a la persona o personas responsables con un subject y un body text que yo ya he especificado. Como por ejemplo:

Sen@r,

La tarea #xxx asignada a usted ha vencido...

Respuesta

Funciona muy bien. Como haría para enviar el correo desde Lotus notes..

3 respuestas más de otros expertos

Respuesta
5

Podrías darme esta información:

1. El nombre de la hoja donde tienes tu información

2. Las columnas donde tienes: la tarea, la fecha, el correo

3. Cuándo sabes que una fecha está vencida

4. Te envío la macro y tu le completas el subject y el body o quieres que de una vez le diga de donde se toman.

5. Si ya tienes el subject y el body en alguna celda, dime en cuáles.

Gracias Dam,

1.La hoja se llama Task Status

2.Las columnas donde esta la información esta de esta manera:

(B3) TAREA,(C3) ASIGNADO POR, (D3) FECHA DE RECIBIDO, (E3) ASIGNADO A, (F3)FECHA ASIGNADO,(G3) FECHA DE ENTREGA,(H3) ESTATUS, (I3) NUMERO DE TAREA,J3 EMAIL1, K3 EMAIL2, L3 EMAIL4.

Dam como puedes ver es una tabla en la que se registra esta información y en la columna ESTATUS va a haber una formula que me compare la fecha de entrega con la fecha de hoy y si es igual o ha sobrepasado la fecha de entrega envíe un mail a las personas en las columnas J3,K3,L3, en donde van a estar escritas tres direcciones de correo.

El subject y el body no lo he pensado aun, por lo que te agradecería en esos espacios me agregaras:

Subject: Task Status

Body: Sen@r "ASIGNADO A" el trabajo " NUMERO DE TAREA" le fue asignado el dia "FECHA ASIGNADO" y actualmente se encuentra "ESTATUS". Favor indicar la razón de esta situación.

Gracias.

Muchas gracias Dam por tu apoyo.

Saludos, Alvaro.

No me quedó claro lo del estatus, en los siguientes ejemplos qué sucede, hoy estamos a 17 de noviembre, ¿cuáles si se envían?

Fec entrega estatus
16/11/2012 17/11/2012
17/11/2012 17/11/2012
18/11/2012 17/11/2012

En la columna ESTATUS, ¿vas a poner la fecha de hoy?

Te anexo la macro, compara la fecha de hoy, que se encuentra en la columna ESTATUS", contra la fecha de entrega, si la fecha de entrega es menor o igual a la fecha de hoy, entonces envía el mail

Instrucciones para un botón y ejecutar la macro
1. Abre tu libro de Excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona ALt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Ahora para crear un botón, puedes hacer lo siguiente:
6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona Asignar macro: selecciona enviar, Aceptar.
9. Para ejecutarla dale click a la imagen.

Sub enviar()
Sheets("Task Status").Select
ufila = Range("B" & Rows.Count).End(xlUp).Row
For i = 4 To ufila
If Cells(i, 7) <= Cells(i, 8) Then
    Set parte1 = CreateObject("outlook.application")
    Set parte2 = parte1.createitem(olmailitem)
    para = Cells(i, 10) & ";" & Cells(i, 11) & ";" & Cells(i, 12)
    parte2.to = para 'Destinatarios
    'parte2.CC = "" 'Con copia
    parte2.Subject = "Task Status" '"Asunto"
    '"Cuerpo del mensaje"
    parte2.body = "Señ@r " & Cells(i, 5) & _
    " el trabajo " & Cells(i, 2) & _
    " le fue asignado el día " & Cells(i, 6) & _
    " y actualmente se encuentra " & Cells(i, 8) & _
    ". Favor indicar la razón de esta situación."
    'parte2. Attachments.Add Ruta & Archivo
    'parte2. Send 'El correo se envía en automático
 parte2. Display 'El correo se muestra
End If
Next
End Sub

Saludos.Dam
Si es lo que necesitas.

Muchas Gracias Dam,
Ya la probé y funciona Excelente, con respecto al Estatus mi idea es que yo comparo en esa celda la fecha de entrega contra la fecha actual y por medio de una formula "if" que me brinde dos estatus, si aún no es la fecha sería "ON TIME" y si la fecha de hoy es igual o posterior que me brinde "Due". Lo otro que te quería pedir es que mi idea es que el mail se envíe automático en el momento en que se abre el archivo de excel, esto para que como en determinado momento van a ver muchas tareas en el file yo simplemente lo abro cada día y teniendo outlook previamente abierto los mails se vayan. Sería posible?
Muchísimas gracias de nuevo Dam.

Te cambio la macro, para que envíe los correos cuando abras el libro.

Instrucciones para ThisWorkbook
1. Abre tu hoja de excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona ALt + F11
3. Del lado izquierdo dice: VBAProject, abajo dale doble click a ThisWorkbook
4. Del lado derecho copia la macro

Private Sub Workbook_Open()
'envía mail
'Por.Dam
Sheets("Task Status").Select
ufila = Range("B" & Rows.Count).End(xlUp).Row
For i = 4 To ufila
If Cells(i, 7) <= Cells(i, 8) Then
    Set parte1 = CreateObject("outlook.application")
    Set parte2 = parte1.createitem(olmailitem)
    para = Cells(i, 10) & ";" & Cells(i, 11) & ";" & Cells(i, 12)
    parte2.to = para 'Destinatarios
    'parte2.CC = "" 'Con copia
    parte2.Subject = "Task Status" '"Asunto"
    '"Cuerpo del mensaje"
    parte2.body = "Señ@r " & Cells(i, 5) & _
    " el trabajo " & Cells(i, 2) & _
    " le fue asignado el día " & Cells(i, 6) & _
    " y actualmente se encuentra " & Cells(i, 8) & _
    ". Favor indicar la razón de esta situación."
    'parte2. Attachments.Add Ruta & Archivo
    parte2. Send 'El correo se envía en automático
 'parte2. Display 'El correo se muestra
End If
Next
End Sub

Saludos.Dam
Si es lo que necesitas.

Dam muchas gracias,

Funciona a la perfeccion.

Te califico con un Excelente porque no hay una opcion mejor.

Nuevamente Muchas Gracias,

Alvaro,

Respuesta

He probado tu macro y no me corre, me podrías hacer el favor de especificarme paso a paso como lo debo hacer, estoy interesado en la ultima macro que hiciste Gracias... - Carlos Fernandez

Respuesta

Esta macro es excelente, me ayuda ahorrando mucho tiempo en mi trabajo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas