Microsoft Excel’ de VBA Yardımıyla Otomatik Olarak E-posta Gönderimi
Bu yazımızda Microsoft Excel çalışma kitabı içerisine ayarlacağımız bir şablon aracılığıyla, Microsoft Outlook uygulaması üzerinden “kime”, “bilgi”, “eposta konusu” ve “Ek” kısımlarını otomatik doldurarak içeriği tarafınızca belirlenmiş olan otomatik eposta gönderimi için gerekli VBA kodlarını tanımlayarak yazacağız.
Bu uygulamanın benzerlerinden farkı, eposta içerisinde gönderilecek olan Ek dosyanın bir uzantı linki olarak eklenerek Microsoft Outlook içerisine dahil edilmesidir.
İlk etapta bir Microsoft Excel çalışma kitabı içerisinde aşağıda gösterildiği şekilde örnek bir şablon hazırlayınız.
Yukarıda Şekil-1′ de gösterildiği gibi Microsoft Excel’ de şablon oluşturulmalıdır. Oluşturulan şablonun sayfa adı “Eposta_Gonderimi” olmalıdır. Aksi taktirde kod çalışmayacaktır. Bu arada “Kime” kısmı; eposta alıcısının email adresini, “Bilgi” kısmı; CC’ ye eklemek istediğiniz kişilerin email adreslerini, “Konu” kısmına; epostanızın konusunu, “Eposta İçeriği” kısmına; eposta içeriğinde yazmak istediklerinizi, “Dosya Uzantısı” kısmına; Ek olarak gönderilecek olan dosyanın bilgisayar içerisinde bulunan adresi(Örn: C\masaüstü\aaa\aa\a.xlsx) yazılacaktır.
Aşağıda Şekil-2′ de görsel olarak Excel şablonunda doldurulacak noktaların, Outlook üzerinde hangi alana denk geldiği gösterilmiştir.
“Durum” kısmı ise, “eposta gönder” butonuna basılması sonrasında sistem tarafından otomatik olarak doldurulacaktır. Buraya siz herhangi bir şey yazsanız bile, “eposta gönder” butonuna basıldıktan sonra yazdığınız ifade silinerek sistem onay metnini yazacaktır.
İlk etapta aşağıda tamamı verilecek olan kodların içerisinde yer alan Deyimlerin, Döngülerin ne iş yaptıklarını, açıklamalarını önden tek tek yapalım.
1- Sub Deyimi: Parametreleri ve kodu bildirir.
2- Dim Deyimi: Değişkenlerin veri tiplerini belirtir.
3- For – Next Deyimi: Belirli kısıtlar dahilinde kod içerisinde yazılı deyimleri döndürür.
Şimdi kodlarımızı aşağıdaki gibi yazıp her bir satırın veya döngünün ne işlemi gerçekleştireceğini açıklayalım.
1-Option Explicit = Kod denetimi yapar.
2-Sub Send_Mails() = Makro adını verdiğimiz alan ve kod başlangıç noktası.
3-Dim sayfa As Worksheet = Sayfa değişkeninin tipini belirler.
4-Set sayfa = ThisWorkbook.Sheets(“eposta_gonderimi”) = Sayfa adının belirlendiği veya değer atandığı durum.
5-Dim i As Integer = “i” değişkeninin veri tipini belirler.
6-Dim Outlook As Object = “Outlook” değişkeninin veri tipini belirler.
7-Dim msg As Object = “msg” değişkeninin veri tipini belirler.
8-Set Outlook = CreateObject(“outlook.application”) = “Outlook” değişkeninin, Outlook uygulamasına tanımlandığı nokta.
9-Dim last_row As Integer = “son satır” değişkeninin veri tipini belirler.
10-last_row = Application.CountA(sayfa.Range(“A:A”)) = A sütunundaki boş olmayan hücre sayısını bulmayı sağlar.
11-For i = 2 To last_row = “i” değişkeninin 2 numaralı satırdan başlayıp 9 numaralı kodda belirttiğimiz son satıra kadar kendisinin gitmesini yarayan döngü başlangıcı.
12- Set msg = Outlook.createitem(0) = “msg” değişkeninin Outlook eposta sayfası oluşturmasını yarar.
13-msg.to = sayfa.Range(“A” & i).Value = Excel şablonunu A sütunundaki değerleri epostanın “Kime” kısmına yazar.
14-msg.cc = sayfa.Range(“B” & i).Value = Excel şablonunu B sütunundaki değerleri epostanın “Bilgi” kısmına yazar.
15-msg.Subject = sayfa.Range(“C” & i).Value = Excel şablonunu C sütunundaki değerleri epostanın “Eposta Konusu” kısmına yazar.
16-msg.body = sayfa.Range(“D” & i).Value = Excel şablonunu D sütunundaki değerleri epostanın “Eposta İçeriği” kısmına yazar.
17-If sayfa.Range(“E” & i).Value <> “” Then
18-msg.attachments.Add sayfa.Range(“E” & i).Value
19-End If = 17,18 ve 19. satırda bulunan kodlar, Excel şablonunun E sütununda bulunan dosya uzantısını Outlook içerisine Ek olarak getirir.
20-msg.send
21-sayfa.Range(“F” & i).Value = “Eposta Gönderilmiştir” = Eposta gönderimi sonrasında Excel şablonunun F sütunu ilgili hücresine “Eposta gönderilmiştir yazılmasını sağlayan kod.
22-Next i = 11 numaralı kodda başlattığımız For döngüsünün kapandığı nokta.
23-MsgBox “Eposta Gönderimi Başarılı” = Eposta gönderimi sonrasında bilgi mesajı vermeye yarayan kod.
24-End Sub = Kod sonu.
En son olarak ” Eposta Gönderimi İçin Örnek Şablon ” görselinde gösterildiği gibi bir “Eposta gönder” butonu yaparak yazılan kodları bu butona sağ tıklayıp makro ata diyerek bağlıyoruz. Kodları aşağıda bulunan bloktan kopyalarak Excel dosyanız içerisine ekleyebilirsiniz.
Option Explicit Sub Send_Mails() Dim sayfa As Worksheet Set sayfa = ThisWorkbook.Sheets("eposta_gonderimi") Dim i As Integer Dim Outlook As Object Dim msg As Object Set Outlook = CreateObject("outlook.application") Dim last_row As Integer last_row = Application.CountA(sayfa.Range("A:A")) For i = 2 To last_row Set msg = Outlook.createitem(0) msg.to = sayfa.Range("A" & i).Value msg.cc = sayfa.Range("B" & i).Value msg.Subject = sayfa.Range("C" & i).Value msg.body = sayfa.Range("D" & i).Value If sayfa.Range("E" & i).Value <> "" Then >msg.attachments.Add sayfa.Range("E" & i).Value End If msg.send Sayfa.Range("F" & i).Value = "Gönderildi" Next i MsgBox "Eposta Gönderimi Başarılı" End Sub
Kod yazımı sonrasında sorun ile karşılaşanlar gerek konu altı yorumlardan gerekse Linkedin hesabım üzerinden ulaşarak çözüm sağlayabilir.
Bir sonraki yazıda görüşmek üzere.
Outlook.createitem (0) komutu Outlook eposta sayfası oluşturamıyor