vba soru PDF olarak kaydet Mail olarak gönder

Katılım
25 Mayıs 2015
Mesajlar
94
Excel Vers. ve Dili
VBA
Merhaba,

ekteki örnek dosyada 3 adet sayfa var. Benim istediğim bu 3 sayfada yer alan mavi alanı sayfanın adı ile PDF olarak kaydedip, kaydedilen PDF i de yine aynı sayfa içerisinde yer alan P19 hücresindeki mail adresine mail olarak göndermek. ama bunu yaparken tek tek yapmak yerine , PDF oluştur ve Gönder gibi bir butona bastığımda tek tek yapmasını istiyorum,

Mailin konu kısmını da ben yazabileyim

bir çok konuyu araştırdım ancak kodları birleştirmek bana göre değil açıkcası çok anlamıyorum yardımcı olabilirseniz sevinirim.

 

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,892
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
.

Örneğin buton tıklandığında;
aynı anda 3 sayfa içinde mail mi atılacak yoksa
herhangi bir sayfada için tek mail atılacak.

3 sayfa sayısı ve isimleri sabit mi?

.
 
Katılım
25 Mayıs 2015
Mesajlar
94
Excel Vers. ve Dili
VBA
.merhaba, sayfa isimlerini ben değiştirebileceğim,
her sayfa kendi için oluşturduğu PDF i P19 daki e posta adresine mail atacak.


ceyda sayfası ceyda@abc.com a
mehmet sayfası mehmet@abc.com

her sayfa içinde kendi butonu olursa daha güzel olur.
bu arada sayfa sayısı sabit değil azalıp çoğalabilir zamanla

Örneğin buton tıklandığında;
aynı anda 3 sayfa içinde mail mi atılacak yoksa
herhangi bir sayfada için tek mail atılacak.

3 sayfa sayısı ve isimleri sabit mi?

.
 

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,892
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
.

Kod:
Sub kod_mail()

    Application.EnableEvents = False
    
    Dim xlOutlook   As Object
    Dim xlMail      As Object
    Set xlOutlook = CreateObject("Outlook.Application")
    Set xlMail = xlOutlook.CreateItem(0)

    ActiveSheet.PageSetup.PrintArea = "$A$19:$M$224"
    dosyayolu = CreateObject("WScript.Shell").specialfolders("Desktop") & "\" & ActiveSheet.Name & "_" & Format(Now, "ddmmyy_hhmmss") & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=dosyayolu, _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


    With xlMail
        .To = Range("P19").Value
        .CC = ""
        .Subject = ""
        .Body = ""
        .Attachments.Add dosyayolu
        .Save
        .Display
    End With
    
    Set xlMail = Nothing
    Set xlOutlook = Nothing
    Kill dosyayolu

    Application.EnableEvents = True

End Sub
.
 
Katılım
25 Mayıs 2015
Mesajlar
94
Excel Vers. ve Dili
VBA
çok çok teşekkür ederim nokta atışı tam istediğim gibi olmuş ellerinize excelinize sağlık :)
 
Katılım
6 Mayıs 2020
Mesajlar
205
Excel Vers. ve Dili
Microsoft Office 365 E3
Altın Üyelik Bitiş Tarihi
01-10-2024
.

Kod:
Sub kod_mail()

    Application.EnableEvents = False
   
    Dim xlOutlook   As Object
    Dim xlMail      As Object
    Set xlOutlook = CreateObject("Outlook.Application")
    Set xlMail = xlOutlook.CreateItem(0)

    ActiveSheet.PageSetup.PrintArea = "$A$19:$M$224"
    dosyayolu = CreateObject("WScript.Shell").specialfolders("Desktop") & "\" & ActiveSheet.Name & "_" & Format(Now, "ddmmyy_hhmmss") & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=dosyayolu, _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


    With xlMail
        .To = Range("P19").Value
        .CC = ""
        .Subject = ""
        .Body = ""
        .Attachments.Add dosyayolu
        .Save
        .Display
    End With
   
    Set xlMail = Nothing
    Set xlOutlook = Nothing
    Kill dosyayolu

    Application.EnableEvents = True

End Sub
.
Emir Hüseyin Bey,
Dosya yolu olarak ima edilen yere ne yazacağız? Bende buna benzer bir şey istiyorum ama PDF değil xlsm olacak.
Dosya yolu olayını açıklama şansınız var mı?
 

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,892
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
.

dosyayolu = CreateObject("WScript.Shell").specialfolders("Desktop") & "\" & ActiveSheet.Name & "_" & Format(Now, "ddmmyy_hhmmss") & ".pdf"

dosyayolu = değişkene atayıp kısa isimle kullanıyoruz.
CreateObject("WScript.Shell").specialfolders("Desktop") = PC masaüstü dosya yolu ‪C:\Users\huseyincoban\Desktop\ gibi
ActiveSheet.Name & "_" & Format(Now, "ddmmyy_hhmmss") = dosyaya verilecek isim, sayfa ismi ve günayyıl saatdakikasaniye
".pdf" = dosya formatı

Sizin eklemek istediğiniz dosyanın yolu sabitse şu şekilde kullanabilirsiniz. Örneğin masaüstündeki bir excel için;
dosyayolu ="C:\Users\huseyincoban\Desktop\KURLAR.xlsm"

.
 

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,892
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
Emir Hüseyin Bey,
Dosya yolu olarak ima edilen yere ne yazacağız? Bende buna benzer bir şey istiyorum ama PDF değil xlsm olacak.
Dosya yolu olayını açıklama şansınız var mı?
Siz yinede bir örnek dosya hazırlayın onun üzerinden gidelim. Kodlarda Kill komutu var. Dosyanızı siler geçer...
 
Katılım
6 Mayıs 2020
Mesajlar
205
Excel Vers. ve Dili
Microsoft Office 365 E3
Altın Üyelik Bitiş Tarihi
01-10-2024
Tamamdır akşam bir boş şablon göndereceğim inşallah.
 
Üst