Makro İle Excelden Mail Göndermek

Bu yazımda sizlere Excel’de makro  yolu ile nasıl mail gönderebileceğinizi anlatmaya çalışacağım.

Bu işlemin birçok yöntemi bulunmaktadır. Ben sizlere, bir tablonun nasıl mail gönderilebileceğini ve tabloya ekleme yapıldığında dinamik alanın nasıl oluşturulabileceğini anlatacağım.

NOT: Bilgisayarınızda Outlook kurulu olmalıdır. Ayrıca bcc kısmında benim mail adresim vardır. Örnek amacıyladır. Ona da dikkat ediniz.

Ayrıca seri olarak mail gönderme videosu ve dosyası için tıklayın.

Bir teşekkürü çok görmeyelim lütfen 🙂
Aşağıya yorum bırakabilir ve web sayfamı arkadaşlarınızla paylaşabilirsiniz… 🙂

Dim Sayfa As Worksheet
    Dim Alan As Range
    Dim daralan As Range

'Mail kısmının boş bırakılması durumunu kontrol eder.
    If Cells(2, 2) = "" Then GoTo HATA
'Herhangi bir hata ile karşılaşırsa, makroyu sonlandırır.
    On Error GoTo HATA

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
'Mail tablosuna dinamiklik kazandırmak için tabloda kaç satır olduğunu bulur.
    saydir = WorksheetFunction.CountIf(Range("D:D"), "<>") + 1
'Dinamik alan tanımlanır.  
  DinamikAlan = "D2:" & "G" & saydir
'Dinamik alan mail alanı olarak kurulur.  
Set Alan = Worksheets("Sayfa1").Range(DinamikAlan)
    
    Set Sayfa = ActiveSheet

    With Alan

        .Parent.Select
        Set daralan = ActiveCell

        .Select
        ActiveWorkbook.EnvelopeVisible = True
        With .Parent.MailEnvelope

            .Introduction = "Otomatik Mail. BYMMB.COM tarafından tasarlanmıştır."

            With .Item
                .To = Cells(2, 2)
                .CC = Cells(3, 2)
                .Subject = Cells(1, 2)
                .bcc = ""
                .Send
            End With

        End With

        daralan.Select
    End With
    
    Sayfa.Select

HATA:
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With

Faydalı olması dileğiyle…

Similar Posts

104 Comments

  1. Merhaba,yazınızı okudum benim şu şekilde bir sıkıntım var…
    Sayfa üzerinde yazdırma alanı belirlenmiş bir alan var bu alana pdf ye çevir diye bir buton kodlaması yazdım ve çeviriyor çevirirken yazdırma alanı içerisindeki D6 hücresinden dosya kaydı yapacağı müşterinin adını otomatik çekiyor..Buraya kadar herşey normal bir buton kodlaması daha yaptım yine d12 deki mail adresine göre yazdırma sayfası içindeki kayıtlı olan dosyayı mail atmak istiyorum fakat Attachment yapacağım yerde dosya yolunu yazmam gerek ben yine müşteri adından çeksin istiyorum umarım anlatabilmişimdir…Cevabınızı bekliyorum teşekkürler..

  2. bilgi işlem merkezinde kullanmak üzere diğer kullanıcıların excel üzerinden isteklerini benim mail adresime düşmesini istiyorum ve hocam sizin kodu kullanmaya çalıştım çalıştıramadım. yardımcı olursanız sevinirim.

  3. Merhaba Arkadaşlar
    Benim bir düşüncem var;
    Bizim grup stok kayıtlarını tutuyor. Tahmin ettiğiniz gibi binlerce malzeme cinsi ve ilgili hücre var ve koşullu biçimlendirme ile kritik seviyeye gelen malzemeleri görebiliyoruz. Biz bir adım daha ileri giderek herhangi bir malzeme kritik seviyeye düştüğünde ilgili kişiler yani yaklaşık 10 kişiye şu malzeme kritik seviyeye düştü diye otomatik mail atması sizce olabilir mi ?
    görüş ve önerileriniz için şimdiden çok teşekkür ederim.

  4. Merhaba Hocam
    vermiş olduğunuz mail gönderme ile ilgili excel için teşekkürler gerçekten çok işime yaradı emeği geçenlerin eline sağlık..teşekkürler.. bir ilave olarak kimden kısmını ekleyebilirmiyiz…FROM

  5. emeğinize sağlık, paylaşımlarınız çok kaliteli ve özenli.
    bu kadar emek veriyorsunuz 5 yorum yapılması çok ilginç, toplum olarak duyarsız olduğumuz gösteriyor. eminim buradan öğrenip iş yerinde hava atan binlerce kişi vardır 🙂
    siz yine de paylaşımlarınıza devam edin, teşekkürler.

    1. İçlerinden de olsa Allah razı olsun demişlerse bana yeter aslında 🙂
      Çünkü sadece bunun için paylaşıyorum.
      Yorumunuz için teşekkürler…

  6. ellerinize sağlık
    o kadar işime yaradı ki ay sonlarında saatlerimi alan bildirimlerimi
    şimdi tek tuşla halledebiliyorum
    çok teşekkürler

  7. hocam, elinize sağlık
    sade bir anlatımla kurgulamışsınız. çok işimi gördü allah razı olsun

    saygılar

  8. elinize sağlık , Teşekkürler, güzel bir raporlama aracı olmuş ancak buradaki kodlarda sabit bir düğmeye basılmadan , otomatik olarak belirli bir tarih ve saatte gönderme seçeneği de olsa daha da iyi olurmuş…

  9. Hocam selam,
    Introduction kısmında 2-3 satır halinde yazmak istiyorm mesajı. düzenlerken olmuyor hata alıyorum. Önerin nedir?

    Teşekkürler yazı için de.

  10. Ustad paylaştığın tüm bilgiler için hayırlı isteklerin kabul olsun

    1. .bcc = “admin@bymmb.com” birde mail bu adresten mi gitti gözükecek

      1. bcc kısmına ne yazarsanız o kişiye de mail olarak iletilir.

  11. Güzel Bir Çalışma Teşekkürler. Bunu Birde PDF olarak ekleyebilsek süper olur.

  12. Hocam elinize sağlık çok güzel bir çalışma olmuş

  13. Hocam, macro için eline sağlık, teşekkür ederim ancak bir sorum olacak.
    Macro sadece sheetin içindeki dinamik alanı mailin içine yapıştırıp gönderiyor. Sheetin bağlı olduğu workbooku komple nasıl göndereceğiz?
    İyi çalışmalar.

  14. Teşekkür ediyorum. işime yaradı. gerekli düzenlemeleri yaptım. aktif olarak kullanıyoruz. tekrar teşekkür ederim.

  15. Selamlar,

    exceldeki bir alanı ve yaptığım dosyayı da ekleyerek otomatik mail atmaya çalışıyorum ama sürekli kodu doğru yazdığımdan emin olsam da hata alıp duruyorum. Outlook kurulu bilgisayarımda. Ancak neden hata aldığımı incelerken sizin dosyanızı buldum. Bunu da denedim ancak yine hem mail gitmedi hem de excel outlook gibi açıldı. Oraya manuel yazınca gidiyor. Gerek benim dosyamda gerek kendi yüklediğiniz dosyada bana yardımcı olabilir misiniz?

  16. Hocam, merhabalar. Programı indirdim ancak istediğim şekilde çalışmadı. Benim istediğim, 500 kişilik bir listedeki, örneğin a kolonundaki mail adreslerine aynı maili atması. Aynı anda eğer yapılabilirse, aynı dosyada mesela b kolonunda yazan isimleri de mail metninde belli bir yere yazabilirse süper olur. Mümkün müdür ?

    1. Evet mümkündür. 🙂
      Bununla alakalı bir eğitim videosu hazırlayacağım.

      1. Yukarıda bahsi geçen video çekildi mi bilgi alabilir miyim?

      2. Merhaba, bu video çekildi mi? varsa linkini paylaşabilir misiniz?

  17. KOLAY GELSIN ÖNCELİKL EMEGINE SAGLIK FAKAT BENIM SÖYLE BİRŞEYE İHTİYACIM VAR.
    MANTIGI BUNA YAKIN BEN ELİMDE BULUNAN ECXEL TABLOSUNDA KI KİŞİLERE TOPLU MAIL ATMAK ISTIYORUM BCC
    EXCEL ÜZERİNDE KAYITLI BIRDAN FAZLA MAIL ADRESI AMA 1 ADET BILGILENDIRME MAILI

  18. dosyayı e-mail ile gönderirken .Send kodundan sonra ekranda gönderim için onay penceresi çıkıyor. Bu kısmı nasıl kaldırabiliriz.

  19. Teşekkür ederim:), çözene kadar size birkaç mail atmış olabilirim kusura bakmayın=D

  20. Merhaba Arkadaşım
    Ellerine Sağlık,Çok işime yaradı.

  21. eyvallah üstad çok işime yarayacak. Not: bir muhasebeci :)))

  22. Admin eline sağlık güzel bir çalışma. Peki bunu kodlar ile belirli aralıklar ile nasıl gönderttirebiliriz. örneğin her hafta perşembe günü göndersin

  23. Hocam ellerine sağlık çok işime yarayacak.. Bu maile dosya eklememiz mümkün mü?

  24. Merhabalar Mustafa Bey,

    Öncelikle bu bilgilendirici, faydalı, yardımsever paylaşımlarınız için teşekkürü bir borç bilirim. Ben sağlık sektöründe çalışmaktayım ve insanlara randevu tarihleri geldiğinde mail atmaktayım. Bunun için bir Excel dosyasında A sütununda hastaya ait mail adresi, B sütununda mailin gönderilmesi gereken tarih, C sütununda ise mailin içeriği var (2:2000 satırları arasında, her satırda kendine özgü olacak şekilde devam ediyor ve veriler başka sayfadan çekiliyor). Örneğin ben B5 hücresindeki tarih geldiğinde A5 hücresindeki mail adresine, C5 hücresindeki metni otomatik olarak (info@..hospital.com adresinden) gönderebilir miyim? Bir de bunu bir tuşa basmadan, B sütunundaki tarih geldiğinde otomatik olarak göndermesi sağlanabilir mi? Vereceğiniz her türlü cevap için şimdiden teşekkür eder, iyi günler dilerim. Saygılar

  25. Elinize sağlık. Teknolojiyi kullanarak hayatı kolaylaştırmak böyle bir şey. yıllardır kendi başıma excel ile bir çok işimi yaparak zamandan nasıl tasarruf ederim uğraşı içindeyim. bunu yaparken de hem öğrenmek hemde öğretmekte güzel bir şey.

    Nilay Karabaşoğulları yazmış olduğu işlemin aynısından benimde ihtiyacım var. Yardımcı olabilirseniz sevinirim. Aynı komutlar olursa da olur. hücreleri değiştirebilirim.
    Şimdiden teşekkürler.

  26. Öncelikle teşekkürler. Bu send den önce alıcı anımsatıcı ve okundu satırlarında ekleye bilirmiyiz. Özetle otomatik gönderdiğim mailin okunduğu ve alıcı anımsatıcısında olmasına ihtiyacım var.

  27. Merhaba yapmış olduğunuz exceli sorunsuz olarak kullanıyordum fakat şirket bilgisayarı windows 10 güncellemesi yaptıktan sonra mail göndermede sıkıntı oluştu. Gönder Gitsin butonuna bastıktan sonra excel sayfasının üst kısmında outlook gibi From Sent To kısımları çıkıyor ve elle doldurulması isteniyor. Bunu düzeltmenin bir yolu var mı ?

    1. hocam merhaba bende de Cenk Bey ile aynı sorun yaşıyorum. uzun süreden bu yana sorunsuz çalışıyordu hatta win10 ve excel2016 da da sorun yaşanmadı ancak dün şirkete bir win güncelleme geldi şuan aynen Cenk Bey deki sorunu yaşıyorum butona basıyorum excel sayfasının üst kısmında outlook gibi From Sent To kısımları çıkıyor ve excel donuyor. Sorun ne anlayamadım acil yardımcı olabilirseniz çok sevinirim. İlginiz ve emeğiniz için teşekürler

      1. Bir office güncellemesi ile alakali olduğunu düşünüyorum. Güncellemelerden K ile başlayan herhangi bir update yapılmış mı kontrol eder misiniz?

  28. hocam peki dosya yolunu belirttiğimiz klasördeki rar dosyalarını excel üzerinden toplu mail atabilirmiyiz.

  29. Elinize, emeğinize sağlık. Çok işime yaradı. İmkan olsada bu gibi paylaşımların karşılığını maddi olarak verebilsek.

  30. Hocam merhaba
    Bu sisteme ekstra olarak zaman ayarı dahil edebilir miyiz? Örneğin bir sütunda 50 tane mail var, ben bunlara mailleri her 1 dakik da 2 veya 3 tanesine mail göndermek istiyorum. Böyle bir şey mümkün mü?

    1. Eklenir ancak tavsiye etmem. Hem verimli olmaz hem de bilgisayarı çok yarar. Çünkü arka planda sürekli refresh komutu çalışacak.

  31. Hocam merhaba,
    Sorunsuz ve harika bir makro olmuş elinize sağlık.
    1 sorum olacaktı; outlookta tanımlı imzamı bir türlü ekleyemedim dosya yolu “C:\Users\gokhan\AppData\Roaming\Microsoft\Signatures\imza.htm”. Gerekli kodlar ile yapıyorum hata vermiyor ama sadece tabloyu alıyor.

    yardım edebilirseniz sevinirim.

    1. Gerekli ayarlamaları outlook üzerinden yapın. Outlookta default imza eklerseniz, otomatik gider.

      1. Hocam hızlı geri dönüş için teşekkür ederim.
        Dediğiniz gibi imza yeni iletide, yanıtlananda veya iletilende varsayılan olarak ayarlı fakat görünmedi bir türlü. Outlook versiyonu ile alakalı bir durum olabilir mi(2010 kullanıyorum). Resimli veya resimsiz imza denedim yapamadım.

  32. Hocam hızlı geri dönüş için teşekkür ederim.
    Dediğiniz gibi imza yeni iletide, yanıtlananda veya iletilende varsayılan olarak ayarlı fakat görünmedi bir türlü. Outlook versiyonu ile alakalı bir durum olabilir mi(2010 kullanıyorum). Resimli veya resimsiz imza denedim yapamadım.

  33. Hocam merhaba

    makroda yazılan sütunlar yerine mouse ile seçtiğimiz alanı nasıl mail göndeririz?

    1. Dinamik alanı mouse ile seçtiğiniz alan olarak belirlemek için koda aşağıdaki satırları ekleyebilirsiniz.

      Dim daralan As String
      daralan = Selection.Address

      Bu sayede mouse ile seçtiğimiz alanı mail olarak gönderebiliriz.

      1. hocam yada sütunlardan birine tarih eklense makroda sadece bugun tarihli sütun ve satırları göndermek mümkünmüdür desteğinizi rica ediyorum 🙂

      2. bir kaç hata aldım belirttiğiniz satırları kodda nereye ekleyeceğim kusra bakmayın biraz acemiyim bu işde

  34. hocam kodu eklesemde hata alıyorum nereye eklemem gerekiyor

    Private Sub CommandButton1_Click()
    Dim Sayfa As Worksheet
    Dim Alan As Range
    Dim daralan As Range

    If Cells(2, 2) = “” Then GoTo HATA

    On Error GoTo HATA

    With Application
    .ScreenUpdating = False
    .EnableEvents = False
    End With

    saydir = WorksheetFunction.CountIf(Range(“D:D”), “”) + 1
    DinamikAlan = “D2:” & “G” & saydir
    Set Alan = Worksheets(“Sayfa1”).Range(DinamikAlan)

    Set Sayfa = ActiveSheet

    With Alan

    .Parent.Select
    Set daralan = ActiveCell

    .Select
    ActiveWorkbook.EnvelopeVisible = True
    With .Parent.MailEnvelope

    .Introduction = “Otomatik Mail. BYMMB.COM tarafından tasarlanmıştır.”

    With .Item
    .To = Cells(2, 2)
    .CC = Cells(3, 2)
    .Subject = Format(Date, “DD.MM.YYYY”) & ” – Transfer Listesi..”
    .bcc = “admin@bymmb.com”
    .Send
    End With

    End With

    daralan.Select
    End With

    Sayfa.Select

    HATA:
    With Application
    .ScreenUpdating = True
    .EnableEvents = True
    End With

    End Sub

  35. Sayın Yönetici,

    Siteye yeni girdim. Çok çok beğendim.
    Siteyi arkadaş ve dostlarıma önereceğim.

    Sevgi ve saygılar

  36. Merhaba Emeklerinizi bu şekilde umuma hediye ettiğiniz için çok teşekkür ederiz.

  37. yok artık 4 sene olmuş ve hala sayfa aktif!!! kod için teşekkürler. benimde bir sorum var. bu mailleri şu tarihte gönder şeklinde bir koşul koymak istiyorum mümkünmüdür.

    1. Ben hayatta olduğum sürece paylaşımlarım da hayatta kalacak 🙂
      Kodları bir modül içine yazıp, isim verin. “Gonderici” mesela.
      Sonra butona şu kodları ekleyebilirsiz;

      dondur:
      if now()=timevalue("12:00:00") then call Gonderici
      if now() <> timevalue("12:00:00") then goto dondur

      1. SAYFA AKTİF DERKEN halen RAĞBET GÖRÜYOR ANLAMINDA SÖYLEDİM. BUDA SİZİN BAŞARINIZ TABİİKİ. YALNIZ BEN TARİH OLAYINI BECEREMEDİM. KOŞULU SAAT OLARAK DEĞİLDE TARİH OLARAK YAPMAK İŞİMİ GÖRÜR. FIRSATINIZ OLURSA EKLİ DOSYANIZI ONA GÖRE DÜZENLEYEREK mail adresime gönderebilirseniz sanırım bayağı mutlu olurum 🙂 . YOKSA ARTIK BAKACAZ Bİ ÇARE ÇOK TEŞEKKÜRLER.

  38. vallahi pratik ve güzel bir çalışma olmuş teşekkürler paylaşım için elinize sağlık

  39. merhaba,
    peki bu mail otomatik olarak gider mi? Bir hücredeki sayı mesela 10’dan az olunca mail gönder gibi. böyle bir kurgu yapıla bilir mi?

  40. .Parent.Select kodu sarı renkte duruyor ve göndere bastığımda üst kısımda, gönderilecek adres, bcc ve konu kısmı açılıyor. Ne yapmam gerekiyor. Teşekkürler

  41. Eline sağlık Hocam millet bundan para kazancam diye kasmışta kasmıs 3 gündür arıyorum bir tek bu çalıştı öbürlerinde hep para vermeden burundan kıl aldırmıyorlar allah senden razı olsun

  42. Hocam outlook kurulu ama gönder gitsine bastığımda göndermiyor.Ne yapmam lazım?

    1. hocam bu sorunu hallettim ama sizi bcc’den çıkartmak istiyorum.Nasıl yapabilirim? Kod kısmındaki ilgili satırı sildim ama yine de olmadı.

  43. henüz sayfanızı yeni gördüm ama işime çok yarayacağından eminim şimdiden teşekkürler üstadım.

  44. Merhaba
    Ellerinize sağlık,Tekrar tekrar teşekkür ederim.Bu maile ek dosya eklemek istiyorum,yardımcı olursanız sevinirim.

  45. hocam elinize sağlık. Peki bir kaç sayfalı excel dosyasını makro yoluyla mail atabilir miyim ?

  46. bymmb Hocam Gmail Olarak Kullanmam için paylaşımınız ki kodlar da nerelerde nasıl değişiklik yaparak bunu sağlayabiliriz teşekkürler

  47. merhabalar,
    öncelikle emeğinize sağlık;
    benim sorum outlook üzerinde birden fazla mail adresi mevcut hangi mail ile gönderim sağlayacağını nasıl belirlerim?
    (varsayılan olarak ayarladığım da değişiklik olmuyor)
    Sevgiler,

  48. merhaba. ilgili alanı resim formatında göndermek için nasıl bir işlem yapmalıyız. teşekkürler.

  49. ilk gördüğümde işte bu dedim, gözlerim yerinden çıktı sanki, bu çalışmayı arıyordum,elinize sağlık,

  50. Merhaba,
    elinize sağlık, çok güzel bir çalışma olmuş. Mutlaka herkesin bir şekilde ihtiyacı olur. Yıllar önce bir müdürümün bunu nasıl yaptığını şimdi anlamış oldum 🙂

    Benim ihtiyacım daha basit bir şekli. Şöyle ki;
    Sayfa1 de A18 hücresinde hesaplama sonucu otomatik değişken bir sayı oluyor. Bu sayının -1 den küçük yada +1 den büyük olma durumunda sabit iki maile (to, cc şeklinde) otomatik olarak maili göndermesi. (Yani hücredeki sayı -1< x<+1 dışında farklı bir sayı olduğunda.)

    Umarım anlatabilmişimdir.
    Yardımcı olursanız çok sevinirim.
    Teşekkürler, iyi çalışmalar dilerim.

  51. Merhabalar,
    Çok guzel bir blog, biraz bcc mailleriyle sizi rahatsız etmiş olabilirim kusura bakmayın 🙂

    Söyle bir sorum olacaktı; bu macroya göre active shhetin hepsi gidiyor ya misal benım gizlediğim celler de mailde cıkıyor buna nasıl engel olabılırım yanı sadece acık olan goruntuyu gondermesını nasıl sağlayabılırım acaba??

Welali için bir yanıt yazın Yanıtı iptal et

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

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.