Excel VBA makrók használata e-mail küldéshez

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:

  1. Nyisd meg az Excelben a VBA szerkesztőt (Alt + F11).
  2. Válassz egy modult (vagy hozz létre egy újat: Insert > Module).
  3. Navigálj a Tools > References menüpontba.
  4. 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!

Vissza a blogba

Hozzászólás írása

Felhívjuk a figyelmedet, hogy a hozzászólásokat jóvá kell hagyni a közzétételük előtt.