Results 1 to 3 of 3

Macro help for emailing objects not just cells using outlook

Threaded View

  1. #1
    Registered User
    Join Date
    05-12-2011
    Location
    NJ
    MS-Off Ver
    Excel 2003
    Posts
    10

    Macro help for emailing objects not just cells using outlook

    Hi i am trying to finish a macro to send out an email to every person on a list with a chart and info that is dependent on the person. the macro is as follows: (please check post 2 for the problem)

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Sub Info()
    '
    ' Info Macro
    ' Macro recorded 5/13/2011 by NV
    '
    ' Keyboard Shortcut: Ctrl+c
    '
    
        Dim i As Integer
        
        NumRows = Sheets("Data Chart").Range("D5", Sheets("Data Chart").Range("D5").End(xlDown)).Rows.Count
        For i = 0 To NumRows
             If Not IsEmpty(Sheets("Data Chart").Range("D5")) Then
                Sheets("Input").Select
                Range("J2").Select
                ActiveCell.Value = Sheets("calc").Range("P2").Offset(i, 0).Value
                Range("K2").Select
                ActiveCell.Value = Sheets("calc").Range("Q2").Offset(i, 0).Value
                Range("B7").Select
                ActiveCell.Value = Sheets("calc").Range("R2").Offset(i, 0).Value
                Range("J3").Select
                ActiveCell.Value = Sheets("calc").Range("O2").Offset(i, 0).Value
                Range("B10").Select
                ActiveCell.Value = Sheets("calc").Range("O2").Offset(i, 4).Value
                Range("B11").Select
                ActiveCell.Value = Sheets("calc").Range("O2").Offset(i, 5).Value
                Range("B12").Select
                ActiveCell.Value = Sheets("calc").Range("O2").Offset(i, 6).Value
                Range("B13").Select
                ActiveCell.Value = Sheets("calc").Range("O2").Offset(i, 7).Value
                Range("B14").Select
                ActiveCell.Value = Sheets("calc").Range("O2").Offset(i, 8).Value
                Range("B15").Select
                ActiveCell.Value = Sheets("calc").Range("O2").Offset(i, 9).Value
                Range("B16").Select
                ActiveCell.Value = Sheets("calc").Range("O2").Offset(i, 10).Value
                Range("B17").Select
                ActiveCell.Value = Sheets("calc").Range("O2").Offset(i, 11).Value
                Range("B18").Select
                ActiveCell.Value = Sheets("calc").Range("O2").Offset(i, 12).Value
                Range("B19").Select
                ActiveCell.Value = Sheets("calc").Range("O2").Offset(i, 13).Value
                Range("B20").Select
                ActiveCell.Value = Sheets("calc").Range("O2").Offset(i, 14).Value
                Range("B21").Select
                ActiveCell.Value = Sheets("calc").Range("O2").Offset(i, 15).Value
                
        
      
    ' Email section
                Dim rng As Range
                Dim OutApp As Object
                Dim OutMail As Object
                With Application
                    .EnableEvents = False
                    .ScreenUpdating = False
                End With
             
                Set rng = Nothing
                Set rng = Sheets("Graph").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 = Range("N3").Value
                    .CC = ""
                    .BCC = ""
                    .Subject = "This is the Subject line"
                    .HTMLBody = RangetoHTML(rng)
                    .Display   'or use  .Send
                End With
                On Error GoTo 0
             
                With Application
                    .EnableEvents = True
                    .ScreenUpdating = True
                End With
             
                Set OutMail = Nothing
                Set OutApp = Nothing
    
            End If
        Next
    End Sub
    Function RangetoHTML(rng As Range)
    ' Changed by Ron de Bruin 28-Oct-2006
    ' Working in Office 2000-2010
        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)
            Application.CutCopyMode = False
            .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
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Last edited by nvidiaev; 05-18-2011 at 09:13 AM.

Thread Information

Users Browsing this Thread

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

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