
Excel VBA makrók használata e-mail küldéshez
Excel VBA - Automatizált e-mail küldési megoldások
Ha sok e-mailt kell küldened különböző címzetteknek, de nem akarsz előfizetni valamilyen alkalmazásra, vagy épp az aktuálisan elkészített jelentést szeretnéd automatikusan csatolmányként elküldeni, kiváló lehetőséget nyújt rá az Excel VBA funkciója. Ebben a cikkben bemutatom, hogyan készíts egyszerű és összetettebb e-mail küldő makrókat VBA-ban.
1. Az Outlook objektummodell előkészítése
A VBA lehetővé teszi, hogy az Outlook programot vezéreljük egyedi kódokkal. Ehhez engedélyeznünk kell az Outlook objektummodellt az Excel VBA környezetében:
- Nyisd meg az Excelben a VBA szerkesztőt (Alt + F11).
- Válassz egy modult (vagy hozz létre egy újat: Insert > Module).
- Navigálj a Tools > References menüpontba.
- Keresd meg a Microsoft Outlook Object Library bejegyzést, és jelöld be.
2. Egyszerű e-mail küldés VBA-val
Az alábbi kód egy alap e-mailt küld az Outlookon keresztül:
Sub SendEmail()
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "pelda@email.com"
.CC = ""
.BCC = ""
.Subject = "Teszt email VBA-ból"
.Body = "Ez egy automatikusan generált email."
.Send
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Magyarázat:
- CreateObject("Outlook.Application"): Létrehoz egy Outlook objektumot.
- CreateItem(0): Létrehoz egy új e-mailt.
- .To: Címzett e-mail címe.
- .CC, .BCC: Másolatot és titkos másolatot küldhetünk.
- .Subject: Az e-mail tárgya.
- .Body: Az e-mail szövege.
- .Send: Az e-mail elküldése (ha .Display-t használunk, először megjeleníti az e-mailt).
3. Melléklet csatolása az e-mailhez
Az alábbi kód egy fájlt is csatol az e-mailhez:
Sub SendEmailWithAttachment()
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "pelda@email.com"
.Subject = "Email melléklettel"
.Body = "Kérlek, nézd meg a csatolt fájlt."
.Attachments.Add "C:\Users\Felhasznalo\Documents\pelda.pdf"
.Send
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
A .Attachments.Add sorban adjuk meg a fájl elérési útját, amelyet mellékletként szeretnénk csatolni.
4. Dinamikus e-mail készítés adatok alapján
Ha több címzettnek szeretnél különböző adatokat küldeni, használhatod az Excel celláiban tárolt adatokat.
Sub SendEmailFromExcel()
Dim OutApp As Object
Dim OutMail As Object
Dim ws As Worksheet
Dim lastRow As Integer
Dim i As Integer
Set ws = ThisWorkbook.Sheets("EmailLista")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Set OutApp = CreateObject("Outlook.Application")
For i = 2 To lastRow
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = ws.Cells(i, 1).Value
.Subject = ws.Cells(i, 2).Value
.Body = ws.Cells(i, 3).Value
.Send
End With
Set OutMail = Nothing
Next i
Set OutApp = Nothing
End Sub
Hogyan működik?
- Az Excelben egy EmailLista nevű munkalapnak kell lennie, ahol:
- Az 1. oszlopban a címzettek e-mail címei vannak,
- A 2. oszlopban az e-mailek tárgya,
- A 3. oszlopban az e-mailek tartalma.
- A ciklus végigmegy az összes soron és egyenként küldi el az e-maileket.
5. E-mailek előnézete küldés előtt
Ha szeretnéd látni az e-maileket elküldés előtt, használd a .Display metódust .Send helyett:
.Display 'Az e-mail megjelenítése küldés előtt
Ez megnyitja az e-mail ablakot, így lehetőség van ellenőrizni és manuálisan elküldeni.
6. Időzített e-mail küldés VBA segítségével
Az alábbi kóddal egy jövőbeli időpontban lehet elküldeni az e-mailt:
Sub SendDelayedEmail()
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "pelda@email.com"
.Subject = "Időzített email"
.Body = "Ez az üzenet késleltetve lesz elküldve."
.DeferredDeliveryTime = Now + TimeValue("00:10:00") '10 perc múlva
.Send
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
A .DeferredDeliveryTime beállítja, hogy az e-mail egy adott időpontban legyen elküldve.
Összegzés
Az Excel VBA lehetőséget nyújt arra, hogy teljesen automatizált e-mail küldő rendszert hozzunk létre Outlook segítségével. Az egyszerű levélküldéstől kezdve a mellékleteken át az adatbázisalapú üzenetküldésig számos lehetőséget kínál. Ha napi szinten kell sok e-mailt küldened, ezek a makrók rengeteg időt megtakaríthatnak!
Reméljük, hogy ez az útmutató segít a hatékony VBA e-mail automatizálásban!
Amennyiben szeretnél ennél bonyolultabb problémákat is megoldani, keress minket elérhetőségeinken!