• DİKKAT

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

Tarih koşuluna göre otomatik outlook maili

Sizin yazdığınız gibi gönderilmiş bir mailin içerisine yazı yazmaya çalışmak olur. Aşağıdaki gibi olması gerekli.
Kod:
Sub Auto_Open()
Call mail_gonder
End Sub


Sub mail_gonder()
   sonsatir = Cells(Rows.Count, "A").End(3).Row
   On Error Resume Next
   For i = 2 To sonsatir
If Cells(i, "X").Value <> "Mail atıldı" Then
      isim = Cells(i, "B").Value
      Mail = Cells(i, "C").Value
      randevutarihi = Cells(i, "O").Value
      mailtarihi = CDate(Cells(i, "P").Value)
      If Format(Now, "dd.mm.yyyy") = Format(mailtarihi, "dd.mm.yyyy") Then
            mesaj = Cells(i, "Z")
            Set OutApp = CreateObject("Outlook.Application")
            Set OutMail = OutApp.CreateItem(0)
            With OutMail
             .To = Mail
             .CC = ""
             .Subject = "Randevu Hatirlatma"
              .HTMLBody = mesaj & .HTMLBody
             'Maili otomatik göndermek için .send deki tırnak işaretini kaldırın.
             '.Display
             .send
         
             End With
            
            Set wrdEdit = Nothing
            Set OutMail = Nothing
            Set OutApp = Nothing
      End If
 Cells(i, "X").Value = "Mail atıldı"
End If
  Next i
  
End Sub
 
Sizin yazdığınız gibi gönderilmiş bir mailin içerisine yazı yazmaya çalışmak olur. Aşağıdaki gibi olması gerekli.
Kod:
Sub Auto_Open()
Call mail_gonder
End Sub


Sub mail_gonder()
   sonsatir = Cells(Rows.Count, "A").End(3).Row
   On Error Resume Next
   For i = 2 To sonsatir
If Cells(i, "X").Value <> "Mail atıldı" Then
      isim = Cells(i, "B").Value
      Mail = Cells(i, "C").Value
      randevutarihi = Cells(i, "O").Value
      mailtarihi = CDate(Cells(i, "P").Value)
      If Format(Now, "dd.mm.yyyy") = Format(mailtarihi, "dd.mm.yyyy") Then
            mesaj = Cells(i, "Z")
            Set OutApp = CreateObject("Outlook.Application")
            Set OutMail = OutApp.CreateItem(0)
            With OutMail
             .To = Mail
             .CC = ""
             .Subject = "Randevu Hatirlatma"
              .HTMLBody = mesaj & .HTMLBody
             'Maili otomatik göndermek için .send deki tırnak işaretini kaldırın.
             '.Display
             .send
         
             End With
            
            Set wrdEdit = Nothing
            Set OutMail = Nothing
            Set OutApp = Nothing
      End If
 Cells(i, "X").Value = "Mail atıldı"
End If
  Next i
  
End Sub

Günaydın Sayın askm,

Öncelikle ilgi ve alakanıza teşekkür ederim, konuyu neredeyse sonuca ulaştırdınız. Fakat hala kodda bir sorun olduğunu düşünüyorum. Ekteki görselde göreceğiniz gibi. P2'de dünün tarihi, P3,P4,P5'te ise bugünün tarihi var fakat ben dosyayı açtığımda 'sadece' P3'e ait adrese mail gitti ve X2, X3 hücrelerinde "Mail atıldı" yazdı (x sütunundaki yazıları silip, yeniden açıp denedim, yine aynı durumla karşılaştım).
 

Ekli dosyalar

  • hata.jpg
    hata.jpg
    22.3 KB · Görüntüleme: 11
Cells(i, "X").Value = "Mail atıldı" kısmını ilk end if komutundan önceye alın.
Yani
End If
Cells(i, "X").Value = "Mail atıldı"
end if
Next i
yerine

Cells(i, "X").Value = "Mail atıldı"
End If
End If
Next i
 
Cells(i, "X").Value = "Mail atıldı" kısmını ilk end if komutundan önceye alın.
Yani
End If
Cells(i, "X").Value = "Mail atıldı"
end if
Next i
yerine

Cells(i, "X").Value = "Mail atıldı"
End If
End If
Next i

Çok teşekkür ederim Sayın askım! Kusursuz bir şekilde çalışıyor! Her şeyi çok iyi şekilde düşünmüşsünüz. Son bir şey sormak istiyorum, eğer ileride bir gün lazım olursa, bu kodu bir butona bağlayıp o şekilde çalışmasını sağlamak için kodu nasıl düzenlemeliyim?
 
Command butona bağlayacaksanız Sub mail_gonder kısmının altındaki kısmı kopyalayın veya Call mail_gonder demeniz yeterli. Aşağıdaki kısmı iptal edersiniz.
Kod:
Sub Auto_Open()
Call mail_gonder
End Sub
 
Command butona bağlayacaksanız Sub mail_gonder kısmının altındaki kısmı kopyalayın veya Call mail_gonder demeniz yeterli. Aşağıdaki kısmı iptal edersiniz.
Kod:
Sub Auto_Open()
Call mail_gonder
End Sub

Sayın askm, bilmiyorum bu söylediğim mümkün müdür ama yine de sizi bir kez daha rahatsız edeceğim.. Ben kendi çapımda Türkçe'nin düzgün kullanmasına özen gösteren bir insanım. Excel'de yazıyı Türkçe kurallarına uygun bir şekilde düzenliyorum fakat Outlook'a aldığım zaman alt satırda olmasa gerekenler hala aynı satırda geliyor, bu konuda bir şey yapılması mümkün müdür? Ekteki 2 görsele bakınca net olarak anlayacaksınız.

Ben Excel'e şu şekilde yazıyorum;

"Sayın askm 26/11/17 11:30 tarihinde gerçekleşecek olan örnek alımınızı hatırlatmak için yazıyoruz. Akşam saat 20:00'dan itibaren su hariç bir şey yiyip içmeyiniz. Kullanmakta olduğunuz ilaçları alabilirsiniz. Besin desteklerinizi kullanmayınız.

Saygılar,

Nilay"

Fakat Outlook'a şu şekilde geçiyor;

"Sayın askm 26/11/17 11:30 tarihinde gerçekleşecek olan örnek alımınızı hatırlatmak için yazıyoruz. Akşam saat 20:00'dan itibaren su hariç bir şey yiyip içmeyiniz. Kullanmakta olduğunuz ilaçları alabilirsiniz. Besin desteklerinizi kullanmayınız. Saygılar, Nilay"
 

Ekli dosyalar

  • Outlook.jpg
    Outlook.jpg
    14 KB · Görüntüleme: 12
  • excel.jpg
    excel.jpg
    18.8 KB · Görüntüleme: 12
Sadece Saygılar ve Nilay kelimeleri mi alta geçmesi gerekiyor. Eğer yazı içinde parağraf yapmak istiyorsanız o zaman yan sütuna ekleyerek yazabilirsiniz. Dilerseniz örnek dosyanızı ekleyin onun üzerinden istediğiniz işlemi yapıp ekleyeyim buraya.
 
Eğer sadece isim ve saygılar ifadesini alacaksanız.
.HTMLBody = mesaj & "<BR>" & "Sayılar" & "<BR>" & "ASKM" & .HTMLBody
şeklinde yazın.
Not:HTML kodu olarak algıladığı için satır atlama <BR> tagı ile oluyor. VB kodu içerisinde kullandığınız için de "<BR>" şeklinde yazılıyor.
 
Sadece Saygılar ve Nilay kelimeleri mi alta geçmesi gerekiyor. Eğer yazı içinde parağraf yapmak istiyorsanız o zaman yan sütuna ekleyerek yazabilirsiniz. Dilerseniz örnek dosyanızı ekleyin onun üzerinden istediğiniz işlemi yapıp ekleyeyim buraya.

Sayın asrm,

Ne yazık ki sadece Saygılar ve Nilay kelimeleri değil, metin içerisinde de değişik yerlerde paragraf yapmam gerekebiliyor... Excel'de

&"

"& yaparak bunu gerçekleştiriyordum fakat Outlook'a bu şekilde gelmiyor.

Dosyam ektedir. Eğer bu söylediğim hiçbir şekilde mümkün değilse ise bari aşağıdaki gibi olsun:)

"....

Saygılar,

Nilay"
 

Ekli dosyalar

Parağraflar nerede olduğunu anlamadım malesef. CA dan itibaren ya da M sütunundan bakınca sadece birleştik metin gözüküyor.
 
Parağraflar nerede olduğunu anlamadım malesef. CA dan itibaren ya da M sütunundan bakınca sadece birleştik metin gözüküyor.

https://hizliresim.com/ZOa3ba adresine yükledim net görebilmeniz için.

Açıklığa kavuşturmak için bir düzeltme yapıyorum; Ekteki dosyada göreceğiniz gibi sabit bir metin yok bu yüzden eğer ve birleştir gibi formüller kullanmam gerekiyor, paragraf başı yapmam gereken yerde de

&"

"& ekleyerek paragraf başı yapıyorum. Bilginize.
 
Son düzenleme:
Formülü aşağıya doğru çekmek yerine tek bir hücreden de veri aldırabilirsiniz. Ya da makro içerisine bu ifadeyi de ekleyip yapabilirsiniz. Yani şartı makro içerisinde oluşturabilirsiniz. Bu şekilde bütün satırlara aynı ifadeleri kopyalayıp yapıştırma olmaz. Alt satıra geçmek için VBlf eklemeniz yeterli.(Formülde boşluklar yerine DAMGA(10) eklemeniz yeterli)
 
Formülü aşağıya doğru çekmek yerine tek bir hücreden de veri aldırabilirsiniz. Ya da makro içerisine bu ifadeyi de ekleyip yapabilirsiniz. Yani şartı makro içerisinde oluşturabilirsiniz. Bu şekilde bütün satırlara aynı ifadeleri kopyalayıp yapıştırma olmaz. Alt satıra geçmek için VBlf eklemeniz yeterli.(Formülde boşluklar yerine DAMGA(10) eklemeniz yeterli)

Siz konuya fazla vakıf bir insan olduğunuz için yazdığınız şey herkes tarafından kolay bir şekilde algılanabilir gibi geliyor size, fakat ne yazık ki o kadar basit değil :) bunu bir örnek dosyayla ve/veya formülle açıklamanız mümkün müdür?

Saygılar
 
Aşağıda makro ile yaptım. İlk iki mesaj bu şekilde. Satır başı yapmak istediğiniz yere örnektedki gibi "<BR>" ekleyiniz.

Kod:
Sub mail_gonder()
   sonsatir = Cells(Rows.Count, "A").End(3).Row
   On Error Resume Next
   For i = 2 To sonsatir
If Cells(i, "AS").Value <> "Mail atıldı" Then
      isim = Cells(i, "B").Value
      Mail = Cells(i, "C").Value
      randevutarihi = Cells(i, "Q").Value
      mailtarihi = CDate(Cells(i, "T").Value)
      If Format(Now, "dd.mm.yyyy") = Format(mailtarihi, "dd.mm.yyyy") Then
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      If Cells(i, "R") = "Örnek alımı" And Cells(i, "S") = "Evet" Then
        Mesaj = "Sayın" & " " & Cells(i, "B") & " " & Format(Cells(i, "Q"), "gg/aa/yy ss:dd") & " " & "tarihinde gerçekleşecek olan örnek alımınızı " _
             & "hatırlatmak için yazıyoruz." & " Akşam saat 20:00'dan itibaren su hariç bir şey yiyip içmeyiniz, cinsel temasta bulunmayınız," & _
             "yoğun spor yapmayınız, hamam ve saunaya girmeyiniz." & _
             "<BR>" & "Kullanmakta olduğunuz ilaçları alabilirsiniz. Besin desteklerinizi kullanmayınız." & _
            "<BR>" & "Saygılar '," & "<BR>" & "Nilay"
      ElseIf Cells(i, "R") = "Örnek alımı" And Cells(i, "S") = "Hayır" Then
        Mesaj = "Sayın" & " " & Cells(i, "B") & " " & Format(Cells(i, "Q"), "gg/aa/yy ss:dd") & " " & _
        "tarihinde gerçekleşecek olan örnek alımınızı " & "hatırlatmak için yazıyoruz." & _
        " Akşam saat 20:00'dan itibaren su hariç bir şey yiyip içmeyiniz. Kullanmakta olduğunuz ilaçları alabilirsiniz." & _
        "Besin desteklerinizi kullanmayınız." & _
            "<BR>" & "Saygılar '," & "<BR>" & "Nilay"
        ElseIf Cells(i, "R") = "Rapor yorumu" Then
            Mesaj = "Yukardaki gibi mesaj" 'BU KISMI YUKARDAKİNE GÖRE AYARLAYINIZ
        ElseIf Cells(i, "R") = "Kontrol görüşmesi" Then
            Mesaj = "Yukardaki gibi mesaj 2" 'BU KISMI YUKARDAKİNE GÖRE AYARLAYINIZ
      End If
      
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'            Mesaj = Cells(i, "M")
            Set OutApp = CreateObject("Outlook.Application")
            Set OutMail = OutApp.CreateItem(0)
            With OutMail
             .To = Mail
             .CC = ""
             .Subject = "Randevu Hatirlatma"
              .HTMLBody = Mesaj & .HTMLBody
             'Maili otomatik göndermek için .send deki tırnak işaretini kaldırın.
             .Display
             '.send
         
             End With
            
            Set wrdEdit = Nothing
            Set OutMail = Nothing
            Set OutApp = Nothing
      
 Cells(i, "AS").Value = "Mail atıldı"
End If
End If
  Next i
  
End Sub
 
Aşağıda makro ile yaptım. İlk iki mesaj bu şekilde. Satır başı yapmak istediğiniz yere örnektedki gibi "<BR>" ekleyiniz.

Kod:
Sub mail_gonder()
   sonsatir = Cells(Rows.Count, "A").End(3).Row
   On Error Resume Next
   For i = 2 To sonsatir
If Cells(i, "AS").Value <> "Mail atıldı" Then
      isim = Cells(i, "B").Value
      Mail = Cells(i, "C").Value
      randevutarihi = Cells(i, "Q").Value
      mailtarihi = CDate(Cells(i, "T").Value)
      If Format(Now, "dd.mm.yyyy") = Format(mailtarihi, "dd.mm.yyyy") Then
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      If Cells(i, "R") = "Örnek alımı" And Cells(i, "S") = "Evet" Then
        Mesaj = "Sayın" & " " & Cells(i, "B") & " " & Format(Cells(i, "Q"), "gg/aa/yy ss:dd") & " " & "tarihinde gerçekleşecek olan örnek alımınızı " _
             & "hatırlatmak için yazıyoruz." & " Akşam saat 20:00'dan itibaren su hariç bir şey yiyip içmeyiniz, cinsel temasta bulunmayınız," & _
             "yoğun spor yapmayınız, hamam ve saunaya girmeyiniz." & _
             "<BR>" & "Kullanmakta olduğunuz ilaçları alabilirsiniz. Besin desteklerinizi kullanmayınız." & _
            "<BR>" & "Saygılar '," & "<BR>" & "Nilay"
      ElseIf Cells(i, "R") = "Örnek alımı" And Cells(i, "S") = "Hayır" Then
        Mesaj = "Sayın" & " " & Cells(i, "B") & " " & Format(Cells(i, "Q"), "gg/aa/yy ss:dd") & " " & _
        "tarihinde gerçekleşecek olan örnek alımınızı " & "hatırlatmak için yazıyoruz." & _
        " Akşam saat 20:00'dan itibaren su hariç bir şey yiyip içmeyiniz. Kullanmakta olduğunuz ilaçları alabilirsiniz." & _
        "Besin desteklerinizi kullanmayınız." & _
            "<BR>" & "Saygılar '," & "<BR>" & "Nilay"
        ElseIf Cells(i, "R") = "Rapor yorumu" Then
            Mesaj = "Yukardaki gibi mesaj" 'BU KISMI YUKARDAKİNE GÖRE AYARLAYINIZ
        ElseIf Cells(i, "R") = "Kontrol görüşmesi" Then
            Mesaj = "Yukardaki gibi mesaj 2" 'BU KISMI YUKARDAKİNE GÖRE AYARLAYINIZ
      End If
      
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'            Mesaj = Cells(i, "M")
            Set OutApp = CreateObject("Outlook.Application")
            Set OutMail = OutApp.CreateItem(0)
            With OutMail
             .To = Mail
             .CC = ""
             .Subject = "Randevu Hatirlatma"
              .HTMLBody = Mesaj & .HTMLBody
             'Maili otomatik göndermek için .send deki tırnak işaretini kaldırın.
             .Display
             '.send
         
             End With
            
            Set wrdEdit = Nothing
            Set OutMail = Nothing
            Set OutApp = Nothing
      
 Cells(i, "AS").Value = "Mail atıldı"
End If
End If
  Next i
  
End Sub

Günaydın Sayın askm,

Çok tuhaf bir şeyle karşılaştım ve kendi başıma çözmekte başarılı olamadım. Deneme amacıyla sayfayı doldurdum, C48'e B48'deki isimle mail gitmesi gerekirken B47'deki isimle mail gitti. Deneme yaparken bu bir sorun değil elbet ama yarın birisine başka bir isimle mail atmak benim için sorun yaratabilir. Bunun nedeni ne olabilir acaba?

Aşağıda da Excel'deki veri ve Outlook'a nasıl geldiği;
Excel: https://hizliresim.com/pGaLqq
Outlook: https://hizliresim.com/1G3Xmb
 
Hata bulamadım bendeki örnekde.
 
Hata bulamadım bendeki örnekde.

Hatanın sebebini fark ettim.. R hücresinde eğer Örnek alımı, rapor yorumu, kontrol görüşmesi vs. herhangi bir seçeneği seçmez isem bir önceki satırı seçiyor ve onun adı ile mail gönderiyor. Bunun için bir ekleme yapılması mı gerekir?

Ek bir soru: Size çok fazla rahatsızlık verdiğimi düşünmeye başladım fakat son bir soru ile bu konuyu sonlandırmak isterim, umarım bu başlığı görüntüleyen diğer üyeler için de faydalı bir konu olmuştur. Eğer W hücresine doğum tarihi eklersem (örneğin 26.11.1985) 26.11.2017 tarihine gelindiğinde ekstradan sabit bir doğum günü maili gönderilmesini sağlayabilir miyim?

Saygılar
 
Son düzenleme:
Döngünün başında mesaj="" şeklinde mesaj içeriğini boşaltın.
Diğer konu için de aynı şekilde bu sefer w hücresini kontrol ederek kod yazın. Mail 2 gibi. Auto kısmına onun adını da ekleyin.
 
Geri
Üst