Sub Send_Table_autofilter_2()
Dim MailBody As Range
Dim dwn As Range
ActiveSheet.Range("j1").Activate
On Error Resume Next
ActiveSheet.ShowAllData
Set mWs = Worksheets("Full")
If WorksheetExists("MailBody") Then
Application.DisplayAlerts = False
Worksheets("MailBody").Delete
Application.DisplayAlerts = True
End If
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "MailBody"
mWs.Activate
Set Rng = Range(Range("j1"), Range("j" & Rows.Count).End(xlUp))
For Each cell In Rng
If cell.Value <= Date + 30 Then
If Not cell.Offset(0, 1).Value = "yes" Then
With Worksheets("Sheet5")
With Rng
.AutoFilter field:=1, Criteria1:=xlFilterDate, Operator:=xlFilterDynamic
End With
End With
Worksheets("Sheet5").AutoFilter.Range.Offset(0, 0).Copy Sheets("MailBody").Range("A1")
For Each dwn In Rng.SpecialCells(xlCellTypeVisible)
Rng.Offset(0, 1).Value = "yes"
Rng.Offset(0, 2).Value = Date
Next
ActiveSheet.Range("j2").Activate
ActiveSheet.ShowAllData
sSendTo = "JoeBloggs@yahoo.co.uk"
sSendCC = ""
sSendBCC = ""
sSubject = "Due date reached"
MsgStr = sTemp = "Hello!" & "<br><br>"
sTemp = sTemp & "The due date has been reached "
sTemp = sTemp & "for this project:" & "<br><br>"
sTemp = sTemp & " " & Cells(lRow, 2)
sTemp = sTemp & "Please take the appropriate"
sTemp = sTemp & "action." & "<br><br>"
sTemp = sTemp & "Thank you!" & "<br>"
With Worksheets("MailBody")
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
Set MailBody = .Range(.Cells(1, 2), .Cells(lRow, 7))
End With
MailBody.Columns.AutoFit
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = sSendTo
.CC = sSendCC
.Subject = sSubject
.HTMLBody = sTemp & RangetoHTML(MailBody)
.Display
End With
End If
End If
MailTo = ""
MailSubject = ""
Next
Application.DisplayAlerts = False
Application.DisplayAlerts = True
End Sub
Function RangetoHTML(Rng As Range)
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
Rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial -4163, , False, False
.Cells(1).PasteSpecial -4122, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
With TempWB.PublishObjects.Add( _
SourceType:=4, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=0)
.Publish (True)
End With
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.readall
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
TempWB.Close savechanges:=False
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
Function WorksheetExists(WSName) As Boolean
On Error Resume Next
WorksheetExists = Worksheets(WSName).Name = WSName
On Error GoTo 0
End Function