• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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.

 
.

Ö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?

.
 
.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?

.
 
.

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

.
 
çok çok teşekkür ederim nokta atışı tam istediğim gibi olmuş ellerinize excelinize sağlık :)
 
.

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ı?
 
.

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 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...
 
Tamamdır akşam bir boş şablon göndereceğim inşallah.
 
Geri
Üst