¿Puede Excel enviar un correo si se modifica los datos de una celda?

Tengo un libro compartido con varios compañeros, necesito que cuando alguno de ellos modifique una fecha, automáticamente Excel envíe un correo de alerta a los demás. ¿Alguien sabe cómo?

1 respuesta

Respuesta

Este código es para el ejemplo de que la celda que se cambie sea la A1

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
    Dim oEmail As New clsOutlookEmail
    With oEmail
        .AddToRecipient = "el mail de envío"
        .Subject = "El asunto del mail"
        .Body = "El cuerpo del mail"
        .Send
    End With
    Set oEmail = Nothing
End If

Deberás poner la Macro en la hoja donde se encuentra la celda y asciada al evento worksheet_change

Hola Gregori, gracias por responder. Me gustaría explicar mejor lo que necesito, por si me puedes ayudar un poco más, ¿qué código debo escribir si necesito que si se cambia la información de las celdas de la columna A, B, o C, y quiero que se avise al correo de la columna F de esa fila modificada? MUCHÍSIMAS GRACIAS!

Esto es lo que necesitas:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim OlApp As Object
Dim NewMail As Object
Dim mail As String
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A:C")) Is Nothing Then
smail = Cells(Target.Row, 6)
Set OlApp = CreateObject("Outlook.Application")
Set NewMail = OlApp.CreateItem(0)
    With NewMail
        .To = smail
        .Subject = "El asunto del mail"
        .Body = "El cuerpo del mail"
        .Display
    End With
    Set NewMail = Nothing
End If
End Sub

Solo faltaría configurar que acción se debe tomar si se modifica más de una celda a la vez. En este código, no se realiza ninguna acción tal como se ve en:

If Target.Count > 1 Then Exit Sub

pero podría ser que otra acción sea más adecuada

Por último, comentarte que cuando preguntes, intentes dar el máximo de información posible, así se evita trabajos dobles

Recuerda poner la macro en la hoja

He puesto

. Display

para que veas el mail que vas a enviar. Si quieres enviarlo sin previsulizarlo pon:

. Send

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas