Email macro to send only certain columns

Willie03

Board Regular
Joined
Jun 21, 2013
Messages
50
I have a file where the names of about 500 employees come up that have not taken a course. I have a total of 10 columns in the file with the information needed to send the employees reminders of the courses that need to be completed.
Basically in column "B" we have the names of the employees and in column "I" the employees manager. There may be 5 employees who report to the same manager but only one email should be sent to that manager. So we filter column "I" and send the list of names that come up per manager but only send columns "A & B" in the email to each manager. i have a column with a yes which is column J and would not like to use it anymore either.
My problem is when I run the macro wont do anything at all. Any ideas what I may be doing wrong? I also added the Option Explicit at the top and still get nothing?
Any help will be greatly appreciated...


Code:
Sub Audio_Macro()


    Dim OutApp As Object
    Dim OutMail As Object
    Dim cell As Range
    Dim rng As Range
    Dim Ash As Worksheet
    Dim StrBody As String
    
    Set Ash = ActiveSheet
    On Error GoTo cleanup
    Set OutApp = CreateObject("Outlook.Application")


    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    
    For Each cell In Ash.Columns("I").Cells.SpecialCells(xlCellTypeConstants)
        If cell.Value Like "?*@?*.?*" _
           And LCase(cell.Offset(0, 1).Value) = "Yes" Then


            Ash.Range("A1:H200").AutoFilter Field:=1, Criteria1:=cell.Value


            With Ash.AutoFilter.Range
                On Error Resume Next
                Set rng = .SpecialCells(xlCellTypeVisible)
                On Error GoTo 0
            End With
            
    StrBody = "Bom dia, " & cell.Offset(, -1) & "<br>" & "<br>" & _
              "Por gentileza encaminhar o(s) colaborador(e)s da lista anexa, hoje 04/09 ao Ambulatório mais próximo para orientação do exame de AUDIOMETRIA." & "<br>" & "<br>" & _
              "Caso necessário resposta, envie a mensagem somente para Mickey Mouse." & "<br>" & "<br>" & _
              "Att," & "<br><br>"


            Set OutMail = OutApp.CreateItem(0)


           On Error Resume Next
            With OutMail
                .To = cell.Value
                .Subject = "Convocação para Audiometria"
                .HTMLBody = StrBody & RangetoHTML(rng)
                .Display
                '.Send
            End With
            On Error GoTo 0
            
            Set OutMail = Nothing
            Ash.AutoFilterMode = False
        End If
    Next cell


cleanup:
    Set OutApp = Nothing
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With
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 xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , 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:=xlSourceRange, _
         Filename:=TempFile, _
         Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .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
 

Excel Facts

Which Excel functions can ignore hidden rows?
The SUBTOTAL and AGGREGATE functions ignore hidden rows. AGGREGATE can also exclude error cells and more.

Forum statistics

Threads
1,222,830
Messages
6,168,507
Members
452,194
Latest member
Lowie27

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top