Excel sayfasını mail ile PDF gönderelim

Excel sayfasını mail ile gönderilmesi konusu bir kaç zamandır aklımdaydı. Hem verileri yada içerikleri taşımaya üşenir hale gelmiştim, hem de pratik gelmiyordu. Zaten verilerin ve bunlara bağlı özetlerin Excel benzeri uygulamalar üzerinde oluşunu oldum olası kabul edemedim. Ne zamandır aktif kod yazmıyordum, biraz pasları sökelim dedim ve sıvadım kolları.

Öncelikle 2 hedefim var;

  1. Bir ayar sayfası hazırlamak ve bu sayfada mailin gideceği adresleri, mail konusu gibi içerikleri tutmak
  2. PDF haline getirilecek özet sayfayı gönderme hazırlığı

Ayarlar sayfası (sheet’i) görüntüsü kabaca şu şekilde;

 

 

 

 

 

 

Paylaşılacak gelişi güzel hazırladığım İçerik sayfasının (sheetinin) görüntüsü şöyledir;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

İçerik sayfasına Geliştirici sekmesinde, Ekle çantası içinden bir buton koyuyoruz ve onunla beraber açılan script ekle sayfasından “YENİ” diyerek geliştirici alanına geçiyoruz.

 

 

 

 

 

 

 

 

 

 

 

Açılan VBA ekranına aşağıdaki açıklamalarını yaptığım bloğu direkt ekleyebilirsiniz. Kod içinde açıklama ve notlarımı aldım; detaylarını oradan da izleyebilirsiniz;

    'Hakan Müştak @2020
    'Excel ve PDF dökümanımızın yol tanımlamalarını yapıyoruz
    Dim dosyaPath As String, pdfPath As String
    dosyaPath = ThisWorkbook.Path
    pdfPath = "Mustak-org.pdf"
    'PDF dosyamızı oluşturuyoruz
    Sheets("İçerik").ExportAsFixedFormat Type:=xlTypePDF, Filename:=dosyaPath & "\" & pdfPath, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False

    'Sistemimide yüklü Mail uygulaması Outlook olduğu için nesneyi ona göre yaratıyorum
    Set dam = CreateObject("Outlook.Application").CreateItem(0)
    
    'Yarattığım nesneye göre mail header'ını oluşturuyorum
    With dam
        'TO,CC,bCC ve Subject içeriklerini Ayarlar sayfasında, kullanıcıdan çekiyoruz
        .to = ThisWorkbook.Sheets("Ayarlar").Range("C3")
        .cc = ThisWorkbook.Sheets("Ayarlar").Range("C4")
        .bcc = ThisWorkbook.Sheets("Ayarlar").Range("C5")
        .Subject = ThisWorkbook.Sheets("Ayarlar").Range("C2")
        'Mail içeriğini de Ayarlar sayfasından çekebilirdik ama direkte yazma örneğimiz olsun
        .Body = "Merhaba," & vbNewLine & _
                            " excel dışında buradan gövdeyi yazalım istedim." & _
                            " Buradan da gönderebileceğimiz gibi içeriden de çekebiliriz." & _
                vbNewLine & vbNewLine
        'Dosyayı ekledik
        .Attachments.Add dosyaPath & "\" & pdfPath
        've gönderdik
        .Send
    End With
    ' adettendir, birde mesaj yazalım
    MsgBox "Email gönderildi"

 

Sonrasında gönderilen maili şöyle görüntüleyebilirsiniz;

 

 

 

 

 

 

 

Peki pdf nasıl gözüküyor olabilir?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Mevcut kompleks çalışma yapımla, bana eski yöntemime göre (tek tek bul, kopyala, yapıştır) çok çok daha pratik bir yol oldu. Böyle bir hazır tool bana önerilseydi, satın bile alabilirdim. Kolları sıvayınca oluyor her şey. İhtiyaç duyduğunuz her ne varsa; Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur [M.K. Atatürk]

Yorum, fikir ve sorularınız olursa yoruma yazabilirsiniz.

Hakan Müştak

@2020

 


6 yorum

  1. Rıza dedi ki:

    Hocam HTML mail nasıl atarız? Bu sadece gövdeye text yazıyor. Renklendirme, fon değişimi filan yapılamıyor. ❓

  2. hmustak dedi ki:

    Merhaba,
    Üstte kod içinde .Body olarak gördüğünüz ve mesajın gövdesi olan kısmı .HTMLBody olarak kullanarak yapabilirisiniz. 😉

  3. Mustafa YILMAZ dedi ki:

    merhabalar, hocam çok teşekkür ederiz. ama şöyle bir hata alıyorum:

    Compile Error:
    invalid oudside procedure

    ekrana bu hata geliyor ve dosyaPath = ThisWorkbook.Path yazan yerde ThisWorkbook seçili halde geliyor. (hatanın buradan kaynaklandığını söylüyor. sebei nedir? çalıştıramadım nen yapmam gerekir?

    • hmustak dedi ki:

      Sizin güvenlik yada office/excel ayarlarınızla ilgili olabilir. Ben aylardır (hatta yıllardır) bu şekilde sorunsuzca kullanmaktayım. Mutlaka farklı bir detay vardır yaptığınız.

  4. Fuat Şirin dedi ki:

    Merhaba üstadım.
    makro çok güzel çalışıyor fakat mailin altına imza nasıl ekleyeceğiz?

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

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

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

*

Captcha Kontrolü * Zaman aşımı, sayfayı tekrar yükleyin


Top