Consulting

Results 1 to 1 of 1

Thread: Emailing subtotaled sections from Excel in Outlook

  1. #1
    VBAX Newbie
    Joined
    Mar 2019
    Posts
    1
    Location

    Emailing subtotaled sections from Excel in Outlook

    Hello,


    I hope this is ok in Excel, even though it relates to Outlook. Please move if more appropriate in Outlook.


    I seem to be stuck. I have created email macros before using different email addresses in cells, added verbiage to the body of the email, attached files, etc. I need to do something a little different this time. I need to create emails to 1 email address (a constant) but based on a variable length spreadsheet that is subtotaled with varying lengths of information based on user name, and also the header into each email. I will then forward to the appropriate person from that email box. I know I have to import the data into the email in HTML format... but for the life of me I dont know where to start. I was never very good with arrays. This email macro is working to send populated cells in 1 email.


    Ive searched the forum and Google and not finding what I need it to do. Attached is a sheet with some sample data. Please help?

    Sub Mail_Sheet()
        
        Dim rng As Range
        Dim OutApp As Object
        Dim OutMail As Object
        Dim lastRow As Long
        Dim Msg As String
        Dim acct As Object
        Dim sHello As String
        Dim sBody1 As String
        Dim i As Long: i = 2
        
        With Application
            .EnableEvents = False
            .ScreenUpdating = False
        End With
    
    
        Set rng = Nothing
        Set rng = ActiveSheet.UsedRange
        'You can also use a sheet name
        'Set rng = Sheets("YourSheet").UsedRange
    
    
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
    
    
        On Error Resume Next
        With OutMail
            .To = "Receivers_Email"
            .CC = ""
            .BCC = ""
            .Subject = "Subject of email"
            .HTMLBody = RangetoHTML(rng)
            .Display
            '.Send   or use .Display
        End With
        On Error GoTo 0
    
    
        With Application
            .EnableEvents = True
            .ScreenUpdating = True
        End With
    
    
        Set OutMail = Nothing
        Set OutApp = Nothing
    End Sub
    
    
    
    
    Function RangetoHTML(rng As Range)
    ' Changed by Ron de Bruin 28-Oct-2006
    ' Working in Office 2000-2016
        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"
    
    
        'Copy the range and create a new workbook to past the data in
        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
    
    
        'Publish the sheet to a htm file
        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
    
    
        'Read all data from the htm file into RangetoHTML
        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=")
    
    
        'Close TempWB
        TempWB.Close savechanges:=False
    
    
        'Delete the htm file we used in this function
        Kill TempFile
    
    
        Set ts = Nothing
        Set fso = Nothing
        Set TempWB = Nothing
    End Function
    Attached Files Attached Files

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •