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.

Şekil-1: Eposta Gönderimi İçin Örnek Şablon

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.

Şekil-2: Excel Şablonu – Outlook Gösterimi

“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 &lt;> "" 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.

Yazar Hakkında
Toplam 12 yazı
Halit Bahadır
Halit Bahadır
Microsoft Power Grubu ve Office Uygulamaları üzerine aktif çalışmalar ve danışmanlık yapmakta aynı zamanda özel bir Elektrik Dağıtım Firmasında Şef pozisyonunda çalışmaktayım.
Yorumlar (1 Yorum)
melih
melih Yanıtla
- 14:35

Outlook.createitem (0) komutu Outlook eposta sayfası oluşturamıyor

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara