+ Reply to Thread
Results 1 to 2 of 2

Pasting Multiple Ranges into Outlook 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 Using Excel VBA

    Hey Everyone!

    I am trying to create a macro that pulls 7 tables and 6 graphs from a workbook into an outlook email. I have experimented with putting all the graphs and tables onto 1 sheet and just doing a mass copy paste, but have been unsuccessful since some of the tables have different columns widths. Therefore all of the graphs and tables need to be pulled seperatley, with some on different sheets.

    I have been using the below code from Ron de Bruin Excel Automation, but need to modify it so I am able to pull multiple ranges (at least 13) into the email body.

    Any help would be appreciated!

    Sub Mail_Selection_Range_Outlook_Body()
    Dim rng As Range
    Dim OutApp As Object
    Dim OutMail As Object

    Set rng = Nothing
    On Error Resume Next
    Set rng = Sheets("Sheet2").Range("A5:I30").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 = RangetoHTML(rng)
    .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,477

    Re: Pasting Multiple Ranges into Outlook Using Excel VBA

    Your post does not comply with Rule 3 of our Forum RULES. Use code tags around code.

    Posting code between [CODE]Please [url=https://www.excelforum.com/login.php]Login or Register [/url] to view this content.[/CODE] tags makes your code much easier to read and copy for testing, it also maintains VBA formatting.

    Click on Edit to open your thread, then highlight your code and click the # icon at the top of your post window. More information about these and other tags can be found here

    (This thread should receive no further responses until this moderation request is fulfilled, as per Forum Rule 7)
    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.

+ Reply to Thread

Thread Information

Users Browsing this Thread

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

Similar Threads

  1. Replies: 0
    Last Post: 05-28-2018, 09:53 AM
  2. [SOLVED] Pasting multiple ranges as Bitmaps into Word + Editing them
    By jmfenn in forum Excel Programming / VBA / Macros
    Replies: 1
    Last Post: 07-24-2012, 04:31 PM
  3. Copy Multiple Ranges from Excel to Outlook
    By rhudgins in forum Excel Programming / VBA / Macros
    Replies: 6
    Last Post: 09-17-2010, 10:18 AM
  4. Pasting multiple ranges which offset.
    By jimbod75 in forum Excel Programming / VBA / Macros
    Replies: 0
    Last Post: 02-25-2008, 11:06 AM
  5. 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
  6. Replies: 2
    Last Post: 10-14-2007, 01:05 PM
  7. how to avoid merging when pasting multiple ranges
    By Stian in forum Excel Programming / VBA / Macros
    Replies: 6
    Last Post: 05-20-2005, 11:06 AM

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