Makro ile pdf Kaydedilen dosyayı Mail Gönderme

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,160
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Kırmızı bölümde hata için aşağıdaki seçenekleri kontrol ediniz.

A1 hücresinde dosya adı yazıyor mu?

Dosya_Adi = Range("A1").Value & ".pdf"

Ayrıca Range("Print_Area") ifadesi yerine Range("A1:K20") gibi yazdırma aralığı adresini yazıp deneme yapın.

Gmail üzerinden mail göndermek için açmış olduğunuz diğer başlıkta bağlantı adresi vermiştim. Onu incelerseniz örnekler verilmiş.

Outlok dışında otomatik mail
 
Katılım
17 Ocak 2013
Mesajlar
6
Excel Vers. ve Dili
2010 türkçe
.Body = Range("A3").Value

Burada ben A3 den atıyorum A6 ya kadar olan satırları yazmak istiyorum. a3:a6 diyorum olmuyor araya virgül koyuyorum olmuyor ne yapmam lazım ?
 
Katılım
17 Ocak 2013
Mesajlar
6
Excel Vers. ve Dili
2010 türkçe
birde bu dosyayı PDF yerine excel olarak kaydedip göndermek istersek ne değişiklik yapmamız lazım.

yardımlarınız için teşekkürler.


Aşağıdaki kodu deneyiniz.

A1 hücresinde pdf dosyanın adı yazılacak.
A2 hücresinde mailin konusu yazılacak.
A3 hücresinde mail gövdesinde (penceresinde) görünmesi istenen metin yazılacak.
A4 hücresinde mail gönderilecek adres yazılacak.

Bu hücre adreslerini dilediğiniz gibi değiştirebilirsiniz.

Kod aktif sayfadaki yazdırma alanını pdf olarak excel dosyasının bulunduğu klasöre kayıt edip mail olarak gönderir. Kodların çalışması için en az 2010 excel versiyonu gereklidir.

Kod:
Sub PDF_KAYDET_MAIL_GONDER()
    Dim Uygulama As Object
    Dim Yeni_Mail As Object
    
    If Range("A1").Value = "" Then
        MsgBox "Lütfen dosya adını yazınız!", vbCritical
        Exit Sub
    End If

    Yol = ThisWorkbook.Path
    Dosya_Adi = Range("A1").Value & ".pdf"

    Range("Print_Area").ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=Yol & "\" & Dosya_Adi, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
    
    Set Uygulama = CreateObject("Outlook.Application")
    Set Yeni_Mail = Uygulama.CreateItem(0)

    With Yeni_Mail
        .Subject = Range("A2").Value
        .Body = Range("A3").Value
        .Attachments.Add Yol & "\" & Dosya_Adi
        .Save
        If Range("A4").Value = "" Then
            .To = ""
            .Display
        Else
            .To = Range("A4").Value
            .Send
            MsgBox "Mail gönderildi."
        End If
    End With
    
    Set Uygulama = Nothing
    Set Yeni_Mail = Nothing
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,160
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İlk sorunuz;

Eğer mesaj penceresinde bahsettiğiniz hücreleri yan yana ve aralarında boşluk ekleyerek maile yazdırmak isterseniz aşağıdaki gibi kullanın.

Kod:
.Body = Range("A3").Value & " " & Range("A4").Value & " " & Range("A5").Value & " " & Range("A6").Value
Aynı hücreleri alt alta maile yazdırmak isterseniz aşağıdaki gibi kullanabilirsiniz.

Kod:
.Body = Range("A3").Value & Chr(10) & Range("A4").Value & Chr(10) & Range("A5").Value & Chr(10) & Range("A6").Value

İkinci sorunuz;

Kod sayfadaki yazdırma alanını PDF olarak maile ekliyor. Siz dosyayı komple mi (tüm sayfaları) eklemek istiyorsunuz? Yoksa sadece aktif sayfayı mı?

Ek olarak bu konuyla ilgili faydalı bir kaynak olan aşağıdaki linki incelemenizi öneriyorum. Güzel örnekler var.

http://www.rondebruin.nl/win/section1.htm
 
Katılım
23 Temmuz 2012
Mesajlar
28
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
03.03.2021
objEmail.Send satırında hata veriyor ne yapmam gerekiyor.

Sizin kodunuzu deneme şansım olmadı çünkü aotluk kurulu değil ama aşağıdaki kod denenmiştir.

gmail hesabından mail göndermektedir.

açıklama

d6 hücresine dosya adını yazdım (deneme dosya.pdf)
d10 hücresine konu adını yazdım (merhaba)
d12 hücresine mail gönderecğim kişinin mail adresini yazdım (kullanıcı@hotmail.com)

ve kodu çalıştırdım.

kodun çalışması için aşağıdaki kırmızı yerlere kullanıcı hesabı ve parolayı yazmanız yeterli.




Kod:
Sub mailgönder()

dosya_adı = Cells(6, "D").Value

If dosya_adı = "" Then
MsgBox "Dosya adı yok"
Exit Sub
End If
a = MsgBox(" Kayıt etmek istiyormusunuz.?", vbYesNo + vbInformation, " Uyarı")

If a = vbNo Then
MsgBox "işlemi iptal ettiniz.!"
Exit Sub
End If


ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & dosya_adı, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


Set objEmail = CreateObject("CDO.Message")

kullanici_sahibi = "[COLOR="Red"]kullanıcı@gmail.com[/COLOR]"
kullanici_parola = "[COLOR="red"]123456[/COLOR]"

objEmail.From = kullanici_sahibi ' Gönderilen e-mail adresi
objEmail.To = Cells(12, 4) ' Gönderilecek e-mail adresi

objEmail.Subject = Cells(10, 4)
'objEmail.Textbody = "Test Text Body"

Txt1 = "Merhaba Sayın Yetkili," & "<br>"
Txt2 = "İstemiş olduğunuz ürünlere ait fiyat teklifimiz ekte bilgilerinize sunulmuştur.Firmamızdan teklif almak suretiyle" & "<br>"
Txt3 = "göstermiş olduğunuz ilgiye teşekkür eder, iyi çalışmalar dileriz."
objEmail.HTMLBody = "<font size=3 face=Calibri color=red>" & Txt1 & Txt2 & Txt3

objEmail.Addattachment ThisWorkbook.Path & "\" & dosya_adı
With objEmail.Configuration.Fields

.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = kullanici_sahibi '"kullanıcı@hotmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = kullanici_parola '"parola"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Update

End With
objEmail.Send

MsgBox "işlem tamam.", vbApplicationModal, "Bilgilendirme!"


End Sub


Bu kodları kullanmaya çalıştım fakat
objEmail.Send
Satırında hata veriyor ne yapmam gerekiyor?
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,786
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bu kodları kullanmaya çalıştım fakat
objEmail.Send
Satırında hata veriyor ne yapmam gerekiyor?
Açıklamanın başında da yazmıştım öncelikle gmail hesabınız olmalı
örnek hesap deneme1@gmail.com gibi

D4 hücresine pdf adı yazılmalı örnek veri.pdf gibi

D12 hücresine mail göndereceğiniz mail yazılmalı örnek ahmet005@hotmail.com gibi

D10 hücresine konu başlığı yazmalısınız

diğer taraftan kodun içinde bu bölüme kullanıcı adı ve parolayı yazmalısınız.

Kod:
kullanici_sahibi = "[COLOR="Red"]kullanıcı@gmail.com[/COLOR]"
kullanici_parola = "[COLOR="red"]123456[/COLOR]"
Ayrıca bilgisayarınızda kısıtlamalar olmamalı
 
Katılım
23 Temmuz 2012
Mesajlar
28
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
03.03.2021
Halit bey teşekkürler,

Kodlar bu şekilde

Kod:
Sub mailgönder()

dosya_adı = Cells(4, "L").Value & " " & Cells(11, "D").Value & " " & Cells(9, "C").Value & " " & ".pdf"

If dosya_adı = "" Then
MsgBox "Dosya adı yok"
Exit Sub
End If
a = MsgBox(" Kayıt etmek istiyormusunuz.?", vbYesNo + vbInformation, " Uyarı")

If a = vbNo Then
MsgBox "işlemi iptal ettiniz.!"
Exit Sub
End If


ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & dosya_adı, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


Set objEmail = CreateObject("CDO.Message")

kullanici_sahibi = "erkanselek2003@gmail.com"
kullanici_parola = "*******"

objEmail.From = kullanici_sahibi ' Gönderilen e-mail adresi
objEmail.To = Cells(12, "Q") ' Gönderilecek e-mail adresi

objEmail.Subject = Cells(10, "Q")
'objEmail.Textbody = "Test Text Body"

Txt1 = "Merhaba Sayın Yetkili," & "<br>"
Txt2 = "İstemiş olduğunuz ürünlere ait fiyat teklifimiz ekte bilgilerinize sunulmuştur.Firmamızdan teklif almak suretiyle" & "<br>"
Txt3 = "göstermiş olduğunuz ilgiye teşekkür eder, iyi çalışmalar dileriz."
objEmail.HTMLBody = "<font size=3 face=Calibri color=red>" & Txt1 & Txt2 & Txt3

objEmail.Addattachment ThisWorkbook.Path & "\" & dosya_adı
With objEmail.Configuration.Fields

.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = kullanici_sahibi '"kullanıcı@hotmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = kullanici_parola '"parola"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Update

End With
objEmail.Send

MsgBox "işlem tamam.", vbApplicationModal, "Bilgilendirme!"


End Sub
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,786
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Birde kodu bu şekilde dene sadece kırmızı yere şifrenizi giriniz.

Kod:
Sub mailgönder()

dosya_adı = Cells(4, "L").Value & " " & Cells(11, "D").Value & " " & Cells(9, "C").Value & " " & ".pdf"

If dosya_adı = "" Then
MsgBox "Dosya adı yok"
Exit Sub
End If
a = MsgBox(" Kayıt etmek istiyormusunuz.?", vbYesNo + vbInformation, " Uyarı")

If a = vbNo Then
MsgBox "işlemi iptal ettiniz.!"
Exit Sub
End If


'ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & dosya_adı, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


Set objEmail = CreateObject("CDO.Message")

kullanici_sahibi = "erkanselek2003@gmail.com"
kullanici_parola = "[COLOR="Red"]*******[/COLOR]"

objEmail.From = kullanici_sahibi ' Gönderilen e-mail adresi
objEmail.To = Cells(12, "Q") ' Gönderilecek e-mail adresi

objEmail.Subject = Cells(10, "Q")
'objEmail.Textbody = "Test Text Body"

Txt1 = "Merhaba Sayın Yetkili," & "<br>"
Txt2 = "İstemiş olduğunuz ürünlere ait fiyat teklifimiz ekte bilgilerinize sunulmuştur.Firmamızdan teklif almak suretiyle" & "<br>"
Txt3 = "göstermiş olduğunuz ilgiye teşekkür eder, iyi çalışmalar dileriz."
objEmail.HTMLBody = "<font size=3 face=Calibri color=red>" & Txt1 & Txt2 & Txt3

'objEmail.Addattachment ThisWorkbook.Path & "\" & dosya_adı
With objEmail.Configuration.Fields

.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = kullanici_sahibi '"kullanıcı@hotmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = kullanici_parola '"parola"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Update

End With
objEmail.Send

MsgBox "işlem tamam.", vbApplicationModal, "Bilgilendirme!"


End Sub
 
Katılım
23 Temmuz 2012
Mesajlar
28
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
03.03.2021
Halit bey,
Aynı hatayı verdi.
 
Katılım
23 Temmuz 2012
Mesajlar
28
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
03.03.2021
Bilgisayarınızda kısıtlama varmı
internet sağlayıcınız hangi firma örneğin türk telekom ttnet gibi
TTnet

Bir kısıtlama yok ama gmail den engellenen oturum açma girişimi diye bir mail gelmişti ilk denememde
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,786
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bu konuda bir şey diyemiyeceğim size
 
Katılım
23 Temmuz 2012
Mesajlar
28
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
03.03.2021
Güvenlik ayarını düşürünce mail gönderimi gerçekleşti çok teşekkürler Halit bey
 
Katılım
18 Ekim 2011
Mesajlar
32
Excel Vers. ve Dili
2013 Türkçe
Altın Üyelik Bitiş Tarihi
29/05/2022
Mail Gönderme Makrosu Sonrası Oluşan Problem

Merhabalar,
Konu içerisindeki mail gönderme makrosunu uyguladım ancak,
Bu şekilde daha önce göndermiş olduğum pdf dosyalarına ait mailleri, herhangi bir excel sayfasını her açtığımda, excel formatında otomatik olarak açmaya başladı,
En son C:\\AppData\Roaming\Microsoft\Excel\XLSTART klasörü içerisine attığı pdf dosyalarını silerek sıkıntıdan kurtulabildim, acaba bu durum benim bilgisayarıma özgü bir sıkıntı mıdır? Kodu bu sıkıntı yüzünden kullanamıyorum.

Sub PDF_KAYDET_MAIL_GONDER()
Dim Uygulama As Object
Dim Yeni_Mail As Object

If Range("A1").Value = "" Then
MsgBox "Lütfen dosya adını yazınız!", vbCritical
Exit Sub
End If

Yol = ThisWorkbook.Path
Dosya_Adi = Range("A1").Value & ".pdf"

Range("Print_Area").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Yol & "\" & Dosya_Adi, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Set Uygulama = CreateObject("Outlook.Application")
Set Yeni_Mail = Uygulama.CreateItem(0)

With Yeni_Mail
.Subject = Range("A2").Value
.Body = Range("A3").Value
.Attachments.Add Yol & "\" & Dosya_Adi
.Save
If Range("A4").Value = "" Then
.To = ""
.Display
Else
.To = Range("A4").Value
.Send
MsgBox "Mail gönderildi."
End If
End With

Set Uygulama = Nothing
Set Yeni_Mail = Nothing
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,160
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Siz kodu neredeki dosyada çalıştırıyorsunuz?
 
Katılım
18 Ekim 2011
Mesajlar
32
Excel Vers. ve Dili
2013 Türkçe
Altın Üyelik Bitiş Tarihi
29/05/2022
Kodu Personal.xlsb'den çalıştırdım...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,160
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Başka bir yerdeki normal bir excel dosyasında çalıştırıp deneyin. Sorun düzelecektir.
 
Katılım
18 Ekim 2011
Mesajlar
32
Excel Vers. ve Dili
2013 Türkçe
Altın Üyelik Bitiş Tarihi
29/05/2022
Evet, sorun düzeldi, teşekkür ederim Korhan Bey.
 
Katılım
15 Şubat 2008
Mesajlar
12
Excel Vers. ve Dili
excel 2013- İngilizce
Altın Üyelik Bitiş Tarihi
29.11.2018
merhaba,

bu başlıkta ve benzer diğer başlıklarda yazılanlardan faydalanarak mail atma işlemini başarabildim.

ancak benim yapmak istediğim, pivot tabloda bulunan bütün kişilere bir döngü ile kendi tablolarını mail atmak.

ekteki örnek tabloda göreceğiniz gibi döngünün ilk kişisine mail başarılı bir şekilde gönderiliyor. ancak ikinci turda hata veriyor.

nerede hata yaptığım ve nasıl düzelteceğim konusunda destek alabilir miyim?

şimdiden teşekkürler.
 

Ekli dosyalar

Üst