|

Automatizar Excel: Correo electrónico

Excel es una herramienta potentísima, eso es un hecho.

Cuando tienes una hoja que se nutre de una base de datos y que se actualiza periódicamente cada pocos minutos, viene muy bien que la propia hoja de cálculo nos avise de cualquier cambio que determine una acción a ejecutar.

Para solucionar esto, vamos a programar una macro que detecte los cambios en un rango (tabla) y que nos notifique vía correo electrónico. Esta macro presupone que tenemos instalado y configurado Outlook.

Para añadir nuestra macro, pulsaremos con el botón derecho sobre el nombre de nuestra hoja:

Botón derecho sobre «Hoja1»

A continuación copiamos el código de abajo.

Dim xRg As Range

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    Set xRg = Intersect(Range("F5"), Target)
    If xRg Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) And Target.Value > 0 Then
        Call Mail_small_Text_Outlook
    End If
End Sub

Sub Mail_small_Text_Outlook()
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    ' Select cell A5, *first line of data*.
    Range("A5").Select
    xMailBody = "Linea1" & vbNewLine & vbNewLine & _
              "Linea2" & vbNewLine
    Do Until IsEmpty(ActiveCell)
         ' Insert your code here.
         xMailBody = xMailBody & vbNewLine & _
         ActiveCell.Offset(0, 0).Value & "-" & _
         ActiveCell.Offset(0, 1).Value & "-" & _
         ActiveCell.Offset(0, 2).Value
         ' Step down 1 row from present location.
         ActiveCell.Offset(1, 0).Select
      Loop
    
    On Error Resume Next
    With xOutMail
        .To = "[email protected]"
        .CC = ""
        .BCC = ""
        .Subject = "Asunto del mensaje"
        .Body = xMailBody
        .Send   'or use .Display
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

La tabla tipo es la siguiente:

Tabla que cambia

El funcionamiento es muy sencillo.

  1. Cuando los datos de la tabla se actualizan, el script comprueba que la cantidad de la casilla F5 tenga un valor mayor que 0.
  2. En este caso envía un email a la dirección de correo especificada con los datos de la tabla.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *