Cum sa trimiti email-uri automate din Excel


Cum am putea oare sa trimitem email-uri din Excel? Putem sa trimitem email-uri din Excel? De exemplu, cand apas butonul rosu in fisierul meu, sa notifice intreaga echipa de management intergalactic.

Trimite emailuri excel

Raspunsul meu este da, poti. (cum zicea si tipa din reclama de la ING) 🙂

Radu, ce ti-a venit cu email-uri din Excel? avem Outlook pentru email-uri …

Curs Excel Avansat

Ca sa iti dau putin context, saptamana trecuta am inceput un curs de Excel de nivel avansat / Macro  / VBA cu o companie din Oradea. Eu de fiecare data cand tin un curs cam invat ceva nou, atat din intrebari cat si din sugestii.

In acest curs am vorbit despre un fisier in care avem aprobari. Intrebarea era:

Radu, cum am putea face ca atunci cand cineva aproba un lucru (adica apasa pe un buton) toata lumea implicata in proces sa primeasca un email automat?

Lucru de altfel foarte util, mai ales in contextul in care procesul de aprobare la ei e pe mai multi pasi.

De ce avem nevoie

Bun, “hai sa intram in pita”, cum se mai zice la noi in Bihor.

Mai jos o sa pun cateva galeti de cod VBA, dar ca sa functioneze tine cont ca ai nevoie pe langa Excel si de Outlook cu o adresa de email configurata. Excel-ul se foloseste de Outlook pentru a trimite email-urile.

Pe langa asta, bine ar fi sa ai Outlook-ul pornit cand rulezi macro-ul.

Trimite un email static din Excel

Codul de mai jos poti sa il folosesti pentru a trimite un email care are atat continut cat si recipienti statici.

Sub Mail_small_Text_Outlook()
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)



strbody = "Domnilor" & vbNewLine & vbNewLine & _
"Avem probleme, am apasat butonul rosu." & vbNewLine & _
"Treceti la treaba." & vbNewLine

On Error Resume Next
With OutMail
.To = "vladimir@putin.ru"
.CC = "donald@trump.com"
.BCC = ""
.Subject = "Am apasat butonul"
.Body = strbody
.Send
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
End Sub

Hint: poti sa iei codul de mai sus si sa modifici doar ce e in limba romana + email-urile.

Trimite un email cu continut dinamic

Hai sa complicam putin lucrurile hai sa presupunem ca in acest email vrei sa luam in calcul valorile de pe coloana A si B. De exemplu, pe coloana A avem numele si pe B avem adresele de email.

Sub EmailDinamic()
Dim OutApp As Object
Dim OutMail As Object
Dim cell As Range

Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")

On Error GoTo cleanup
For Each cell In Columns("B").Cells.SpecialCells(xlCellTypeConstants)
If cell.Value Like "?*@?*.?*" And _
LCase(Cells(cell.Row, "C").Value) = "trimite" Then

Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = cell.Value
.Subject = "Bai"
.Body = "Deci " & Cells(cell.Row, "A").Value _
& vbNewLine & vbNewLine & _
"Ai vazut cursul meu online? " & _
"http://officeninja.teachable.com/p/ms-excel-ghid-practic-de-supravietuire"
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
End If
Next cell

cleanup:
Set OutApp = Nothing
Application.ScreenUpdating = True
End Sub

Mai multe exemple

Eu am luat cateva exemple care mie mi s-au parut utile si usor de pus in practica. Excel + VBA poate insa sa faca mult mai mult, face chiar si de mancare, vezi mai multe aplicatii aici.

Foarte tare tipul asta apropo.

Download

Ia de aici fisierul pe care am lucrat eu, si care contine cele 2 macro-uri de mai sus.

Spune-mi si mie

Poate Probabil ca stii mai multe despre macro-uri si VBA decat mine, eu am cam fugit de programare. 🙂

Daca stii ceva interesant despre macro-uri in Excel care trimit email-uri te astept in zona de comentarii.

Disclaimer

Daca acum iti vin idei de inlocuire a sistemului de email marketing cu un fisier Excel, tine cont ca sunt sanse mari ca sa fii catalogat ca si spammer daca faci abuz si trimiti mii de email-uri pe ora prin Outlook.



  • Vali

    Interesant articolul mai ales ca ai postat si sursa (haterul din mine se sesizase). Mă așteptam totusi sa explici putin ce si cum, mai ales pentru începători, care, dpmdv, nu prea vor înțelege asa repede condiția pusă pe cell.Value si acel LCase. Merci!