Soru Günü Gelen Tarihte Excelin mail göndermesi

Katılım
9 Mart 2011
Mesajlar
40
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
11-05-2024
Merhabalar,
Hazırlamış olduğum tabloda fatura ödeme gününe 7 gün kaldıktan sonra ,sırası ile 6-5-4-3-2-1 gün kala otomatik mail gönderme makrosunu nasıl yapabiliriz ?
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Son düzenleme:
Katılım
9 Mart 2011
Mesajlar
40
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
11-05-2024
ÖmerFaruk bey,
mail makrosuyla sıfırdan çözüm olursa daha iyi olur,tabloda A.B.C ve D sütunlarını manuel gireceğim
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Mailde hangi bilgiler yazılacak? Örnek bir format ve içerik paylaşır mısınız
 
Katılım
9 Mart 2011
Mesajlar
40
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
11-05-2024

A

B

C

Fatura Tarihi

Fatura Numarası

Fatura Tutarı

28.11.2022

JBA2022000031740

135.515,04

29.11.2022

JBA2022000031823

37.616,04

06.12.2022

JBA2022000032242

14.412,76



Örneğin ;
28.11.2022 Tarihli JBA2022000031740 numaralı ve 135.515,04 tutarındaki faturanın ödemesine 7 gün kalmıştır
bu şekilde olabilir
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Dosyanız ektedir.
Kodları ayrıca paylaşıyorum.
C++:
Sub OdemeMailGonder()

    Dim Uygulama As Object, Yeni_Mail As Object, Say As Integer, Mesaj As String, myLo As ListObject
    On Error Resume Next
    Set Uygulama = GetObject(, "Outlook.Application")
    On Error GoTo 0
    If Uygulama Is Nothing Then Call Shell("Outlook.exe", vbHide)
    Set Uygulama = CreateObject("Outlook.Application")
    
    Set myLo = Worksheets("Sayfa1").ListObjects("Tablo1")
    If myLo.DataBodyRange Is Nothing Then Exit Sub
    For i = 1 To myLo.DataBodyRange.Rows.Count
        If InStr(1, myLo.DataBodyRange(i, 7), "@") = 0 Then GoTo Devam1
        If myLo.DataBodyRange(i, 6) > 6 Or myLo.DataBodyRange(i, 5) < 1 Then GoTo Devam1
        If myLo.DataBodyRange(i, 8) = Date Then GoTo Devam1
        '28.11.2022 Tarihli JBA2022000031740 numaralı ve 135.515,04 tutarındaki faturanın ödemesine 7 gün kalmıştır
        Mesaj = myLo.DataBodyRange(i, 1) & " tarihli "
        Mesaj = Mesaj + myLo.DataBodyRange(i, 2) & " numaralı ve "
        Mesaj = Mesaj + Format(myLo.DataBodyRange(i, 3), "#,##0.00") & " tutarındaki "
        Mesaj = Mesaj + " faturanın ödemesine " & myLo.DataBodyRange(i, 5) & " gün kalmıştır."
        Set Yeni_Mail = Uygulama.CreateItem(0)
        With Yeni_Mail
            .To = myLo.DataBodyRange(i, 7)
            .CC = ""
            .BCC = ""
            .Subject = "Son ödeme günü hatırlatması"
            .HTMLBody = Mesaj & .HTMLBody
            .BodyFormat = 2
            .Save
            .Send
        End With
        Say = Say + 1
        myLo.DataBodyRange(i, 8) = Date
        Set Yeni_Mail = Nothing:
Devam1:
    Next i
    On Error GoTo 0
    If Say = 0 Then
        MsgBox "Herhangi bir ödeme günü yaklaşmadı. Mail gönderilmedi"
    Else
        MsgBox "Son ödeme günü yaklaşan " & Say & " adet fatura için mail gönderildi."
    End If
    Set myLo = Nothing: Set Uygulama = Nothing: Say = Empty
End Sub
 

Ekli dosyalar

Katılım
9 Mart 2011
Mesajlar
40
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
11-05-2024
Ömer Faruk Bey, teşekkür ederim,elinize sağlık
 
Üst