Conectar Excel con Outlook cuando tenga un texto en una celda

Que me gustaría puedan apoyarme, he creado una fórmula Si, en una de mis celdas, que cuando pasa una fecha POR, este me sale un texto en la celda que dice REVISAR, lo que me gustaría es que cuando tenga este mensaje en la celda de excel, pueda recibir un correo electrónico en mi bandeja de email

1 Respuesta

Respuesta
1

Para enviar un correo en automático se tiene que hacer con una macro.

Envíame tu archivo para adaptar la macro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “David Lezcano” y el título de esta pregunta.

H o l a:

También me tienes que decir lo siguiente:

El correo destinatario.

Qué pongo en el asunto.

Qué pongo en el cuerpo del correo.

Sal u dos

ok, el correo, todavía no esta definido, podría poner uno de prueba, como el que te envié,  el asunto, podría variar, por ejemplo, "alerta de vencimiento" + el texto de una celda. 

gracias, 

Alerta de vencimiento" + el texto de una celda,

De cuál celda, esos datos se tienen que especificar para armar la macro, te voy a poner unos ejemplos, pero deberás cambiarlos en la macro por los datos reales.

Private Sub Worksheet_Calculate()
'Por.Dante Amor
    For i = 3 To Range("I" & Rows.Count).End(xlUp).Row
        If Cells(i, "I") = "REVISAR" Then
            Set dam = CreateObject("outlook.application").createitem(0)
            dam.To = "[email protected]"
            dam.Subject = "alerta de vencimiento " & Range("H" & i)
            dam.Display
            'dam.Send
        End If
    Next
End Sub

En la macro va esta línea comentada.

'dam. Send

Cuando ya la tengas lista para usar, entonces quita el apostrofe de la línea, te debe quedar así:

Dam. Send

Listo, cada que cambies una fecha y se actualice la fórmula de la columna "I" y tenga la palabra "revisar" se enviará un correo.

Hola Amigo Dante, tengo una consulta mas referente a la macro, el tema esta en que cuando tengo el archivo abierto, y si abro otro excel, este empieza a emitir correos nuevamente, así sucesivamente con cualquier excel, que pueda abrir, ,ahora como debería de cambiar la macro, para que solo me emita la primera vez que abra el documento, o si tengo el documento abierto varios días sin cerrar, este solo me mande el correo una vez por día,  otra cosa, y espero que no sea mucho pedir, pero hay forma de ponerle al correo la parte de seguimiento, categoría, alarma, importancia alta dependiendo del dato recibido en la celda,

quiero agradecerte de antemano por tu ayuda

Otra cosa amigo que he encontrado, es que si edito cualquier otra celda ajena a las involucradas en la macro, este nuevamente envía correos, 

como se podría evitar eso

Te parece mejor si ponemos un botón y cuando tu quieras, presiones el botón, ¿se empiece la revisión y se envíen los correos?

Para esto nuevo que pides:

"al correo la parte de seguimiento, categoría, alarma, importancia alta dependiendo del dato recibido en la celda"

Tienes que decirme exactamente de cuál columna tomo esa información.

Valora esta respuesta y crea una nueva en el tema de excel.

Lo del botón seria una opción, pero eso dependería de que uno se acuerde de presionarlo todos los días, yo quería dejarlo el archivo abierto en una maquina todo el día, durante tiempo establecido, no estoy seguro si en la fórmula =HOY(), que esta en la celda AA2, este cambia automáticamente, entonces que ejecute la macro, cuando cambia la fecha ahí, o que se realice cada 24 horas, o solo cuando se abra el archivo

La otra consulta he creado una nueva consulta

H o l a:

Las ejecuciones en automático ocurren cuando se activa un evento en el libro o en la hoja.

Si no ocurre ningún evento, entonces no se puede ejecutar nada.

La otra opción es que se ponga una macro que se ejecute cada 24 horas, pero esto significa que tienes una macro latente y no podrás ejecutar otra macro. Y además la macro ocasionará que tu archivo de excel sea más lento.

Lo que si podemos hacer es que la macro se ejecute cada vez que abres el archivo.

Entonces, quita la macro que te envíe y pon la siguiente macro en los eventos de thisworkbook:

Private Sub Workbook_Open()
'Por.Dante Amor
    Set h = Sheets("Seguimiento")
    For i = 3 To h.Range("I" & Rows.Count).End(xlUp).Row
        If h.Cells(i, "I") = "REVISAR" Then
            Set dam = CreateObject("outlook.application").createitem(0)
            dam.To = "[email protected]"
            dam.Subject = "alerta de vencimiento " & h.Range("H" & i)
            dam.Display
            dam.Send
        End If
    Next
End Sub

Instrucciones para poner la macro en los eventos ThisWorkbook

  1. Abre tu libro 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

pero esa ultima macro, no logro entenderla bien, por otro lado, no hay forma que solo valide cuando hay un cambio en la columna H, es decir cuando solo aparezca el "REVISAR"  porque de verdad, que cada letra que pongo o borro en otra celda, me llena de mensajes

En la columna H tienes una fórmula, la macro se activa cuando se afecta algo en la hoja y se recalcula la hoja, en ese momento se hace la revisión.

Es la única forma.

Utiliza la otra opción que es cuando se abre el libro, entonces que se ejecute la macro.

Ya te envié el archivo con la macro para ejecutarse cada que abres el libro.

R ecuerda valorar la respuesta.

H o l a:

Ya revisé tu archivo, si modificas la columna H y en la columna I dice "revisar", entonces se enviará un correo. Pero solamente de la fila que modificaste la fecha, es decir, si modificaste la celda H5, y en la celda I5 el resultados es "revisar" entonces se enviará el correo. ¿De acuerdo?

Esta es la macro:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("H:H")) Is Nothing Then
        If Cells(Target.Row, "I") = "REVISAR" Then
            Set dam = CreateObject("outlook.application").createitem(0)
            dam.To = "[email protected]"
            dam.Subject = "alerta de vencimiento " & Cells(Target.Row, "I")
            dam.Display
            dam.Send
        End If
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas