Closed Thread
Results 1 to 2 of 2

Pasting Multiple Ranges into Outlook with Tables AND Charts Using Excel VBA

  1. #1
    Registered User
    Join Date
    06-26-2018
    Location
    us
    MS-Off Ver
    10
    Posts
    12

    Pasting Multiple Ranges into Outlook with Tables AND Charts Using Excel VBA

    Hello Everyone,

    I have created a macro that allows be to paste multiple ranges containing tables into an outlook email body. However I have been unable to figure out how to also paste ranges containing active charts into the email body. The email body will ideally have a series of 2 tables, followed by a chart, followed by 2 tables, etc.

    Here is what I have so far that works for just the tables and string text:

    Sub Mail_Selection_Range_Outlook_Body()

    Dim rng As Range
    Dim rng2 As Range
    Dim OutApp As Object
    Dim OutMail As Object
    Dim StrBody As String


    StrBody = "All," & "<br>" & "<br>" & _
    "Below are Today's stats for the Special Review Team." & "<br>" & "<br>" & "Overall Summary"

    Set rng = Nothing
    On Error Resume Next
    Set rng = Sheets("Summary").Range("O4:T15").SpecialCells(xlCellTypeVisible)
    Set rng2 = Sheets("Combined").Range("A42:M42").SpecialCells(xlCellTypeVisible)
    On Error GoTo 0

    If rng Is Nothing Then
    MsgBox "The selection is not a range or the sheet is protected" & _
    vbNewLine & "please correct and try again.", vbOKOnly
    Exit Sub
    End If

    With Application
    .EnableEvents = False
    .ScreenUpdating = False
    End With

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail
    .To = Sheets("Combined").Range("B1")
    .CC = Sheets("Combined").Range("B2")
    .Subject = Sheets("Combined").Range("B3")
    .HTMLBody = StrBody & RangetoHTML(rng) & RangetoHTML(rng2)
    .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)
    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

  2. #2
    Forum Moderator AliGW's Avatar
    Join Date
    08-10-2013
    Location
    Retired in Ipswich, Suffolk, but grew up in Sawley, Derbyshire (England)
    MS-Off Ver
    MS 365 Subscription Insider Beta Channel v. 2404 (Windows 11 22H2 64-bit)
    Posts
    80,830

    Re: Pasting Multiple Ranges into Outlook with Tables AND Charts Using Excel VBA

    Duplicate closed. Continue here, please: https://www.excelforum.com/excel-pro...excel-vba.html
    Ali


    Enthusiastic self-taught user of MS Excel who's always learning!
    Don't forget to say "thank you" in your thread to anyone who has offered you help.
    You can reward them by clicking on * Add Reputation below their user name on the left, if you wish.

    Forum Rules (updated August 2023): please read them here.

Closed Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Pasting Multiple Ranges into Outlook Using Excel VBA
    By jlive24 in forum Excel Programming / VBA / Macros
    Replies: 1
    Last Post: 07-11-2018, 02:40 AM
  2. Sending multiple charts from excel as picture within outlook mail
    By Londonbound in forum Excel Programming / VBA / Macros
    Replies: 1
    Last Post: 02-14-2017, 05:33 AM
  3. Pasting charts and tables into Power point
    By frankyuen1028 in forum Excel Programming / VBA / Macros
    Replies: 1
    Last Post: 08-10-2016, 04:31 AM
  4. Replies: 3
    Last Post: 10-16-2014, 02:01 PM
  5. Replies: 0
    Last Post: 04-30-2013, 02:30 PM
  6. Pasting From Multiple Copied Ranges in Excel 2007
    By ExcelTip in forum Tips and Tutorials
    Replies: 0
    Last Post: 10-31-2007, 04:12 AM
  7. Replies: 1
    Last Post: 02-19-2007, 04:51 PM

Tags for this Thread

Bookmarks

Posting Permissions

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

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1