Excel Formül
Modül 7: İleri Düzey Uygulamalar ve Gerçek Hayat Senaryoları

VBA ile Otomatik Rapor Dağıtımı ve Toplu Mail

Bir işletmede her sabah veya her ay sonu onlarca farklı müşteriye, şubeye veya yöneticiye ayrı ayrı rapor mailleri göndermek ciddi bir operasyonel yüktür. VBA, Microsoft Outlook ile doğrudan entegre çalışarak bu süreci bir "Dijital Posta Güvercinine" dönüştürür.

Excel sayfanızda bir e-posta listesi olduğunu hayal edin. VBA, bu listeyi bir döngüye sokar, her satırdaki e-posta adresini okur, kişiye özel bir hitap metni hazırlar (Örn: "Sayın Ahmet Bey, güncel bakiyeniz 500 TL'dir") ve arkasından Outlook'u tetikleyerek maili otomatik olarak gönderir. Dilerseniz bu maillere PDF raporlarınızı da ek (attachment) olarak iliştirebilirsiniz.

Outlook Application Nesnesi ile Bağlantı Kurmak

VBA kodunun Outlook'u yönetebilmesi için CreateObject("Outlook.Application") komutu ile bir iletişim köprüsü kurulur. Ardından CreateItem(0) metodu ile boş bir mail taslağı oluşturulur.

Temel E-Posta Gönderim Kod Kalıbı

Dim OutApp As Object
Dim OutMail As Object

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

With OutMail
    .To = "musteri@ornek.com"
    .Subject = "Aylık Hesap Ekstresi"
    .Body = "Merhaba, güncel raporunuz ektedir."
    .Attachments.Add "C:\Raporlar\Rapor.pdf"
    .Send ' .Display yazarsanız göndermeden önce ekranda gösterir
End With

Canlı Simülatör: Toplu Mail Dağıtımı

Aşağıdaki simülasyon, müşteri listesini tarayarak her birine kişiselleştirilmiş bir e-posta gönderme sürecini canlandıracaktır. Toplu Mailleri Gönder butonuna basın.

Visual Basic Editörü
Module1 (Bulk Mailing)
Sub MusterilereMailAt()
    Dim i As Integer
    Dim OutApp As Object

    ' Outlook nesnesini yarat ve listeyi döngüye sok
    Set OutApp = CreateObject("Outlook.Application")

    For i = 2 To 3
        Cells(i, 3).Value = "Gönderildi " & Date
    Next i

    MsgBox "Tüm mailler başarıyla gönderildi!", vbInformation
End Sub
Canlı Müşteri Listesi Görünümü
A1
A (Müşteri)
B (E-Posta)
C (Durum)
2
Ahmet Yılmaz
ahmet@ornek.com
Bekliyor...
3
Ayşe Kaya
ayse@ornek.com
Bekliyor...
Microsoft Excel ✕
Tüm mailler başarıyla gönderildi!