Welcome to the forum! That is a pretty involved project for a first time poster.
I will check back tomorrow to see if you or someone else has finished helping or not.
To make your project, I would recommend that you add a helper column or two. One might be, if x, then 31 day reminder is in queue.
This needs some work but shows the concept for the 31 day reminder. This does not check. It just sends the title row and the 2nd data row that could meet the 31 day limit and Column with x is blank. Here I defer delivery for 10 minutes. In practice it would do the 31 day deal. In a Module:
Sub Test()
Dim ws As Worksheet, r As Range, b As Range
'Tools > References > Microsoft Outlook xx.0 Object Library
Dim olApp As Outlook.Application, olMail As Outlook.MailItem
'Tools > References > Microsoft Word xx.0 Object Library
Dim Word As Document, wr As Word.Range
Set ws = Worksheets("Renewal Dates")
Set r = ws.Range("A1:G1")
Set olApp = New Outlook.Application
Set olMail = olApp.CreateItem(olMailItem)
With olMail
.Importance = olImportanceNormal
.To = "ken@gmail.com"
.Subject = "31 Day Reminder"
.GetInspector.Display
Set Word = .GetInspector.WordEditor
r.Copy
Word.Range(0, 0).Paste
r.Offset(2).Copy
Set wr = Word.Content
wr.Collapse Direction:=wdCollapseEnd
wr.Paste 'Paste at end
Application.CutCopyMode = False
'https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook._mailitem.deferreddeliverytime.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
.DeferredDeliveryTime = Now + TimeValue("00:10:00")
.Display
'.Send
End With
Set olMail = Nothing
Set olApp = Nothing
End Sub
Bookmarks