+ Reply to Thread
Results 1 to 3 of 3

Code is sending same chart to all email body .

Hybrid View

  1. #1
    Registered User
    Join Date
    09-25-2012
    Location
    Gurgaon
    MS-Off Ver
    Excel 2007
    Posts
    25

    Code is sending same chart to all email body .

    Hi All,

    Want to send 35 diffrent Emails with the help of vba code.
    Every thig is ok but every time sending the same chart.
    every time i have removed chart .

    Here is the email code:
    
    
    Sub Mail()
        Dim rng As Range
        Dim OutApp As Object
        Dim OutMail As Object
        Dim rCell As Range, sAddys As String
        Dim sCell As Range, tAddys As String
        
        
        Set rng = Nothing
        On Error Resume Next
        Set rng = Selection.SpecialCells(xlCellTypeVisible)
        Set rng = Sheets("Snapshot").Range("A3:J9").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
            With ThisWorkbook.Sheets("Sheet1")
            For Each rCell In .Range("A3", .Cells(.Rows.Count, "A").End(xlUp))
            If rCell.Value <> "" Then sAddys = sAddys & rCell.Value & "; "
                
            Next rCell
        End With
        OutMail.To = sAddys
        
        With ThisWorkbook.Sheets("Sheet1")
            For Each sCell In .Range("B3", .Cells(.Rows.Count, "B").End(xlUp))
                If sCell.Value <> "" Then tAddys = tAddys & sCell.Value & "; "
                
           Next sCell
           
        End With
        OutMail.cc = tAddys
        
        .Subject = "Validation Dashboard Till - " & " " & Date
        .HTMLBody = "Dear" &  "<img src='D:\Sushil\abc\Perm.png'>" & RangetoHTML(rng) & "<BR><BR>" & "<img src= 'D:\Sushil\abc\Chart1.png' >" & "<BR><BR>Please find the attached file for your reference.  <br><br>  Thanks & Regards,<Br>Name<Br>" Number
        
        .Attachments.Add A
        .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-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)
            .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
    Registered User
    Join Date
    09-25-2012
    Location
    Gurgaon
    MS-Off Ver
    Excel 2007
    Posts
    25

    Re: Code is sending same chart to all email body .

    .......Please help.................

  3. #3
    Registered User
    Join Date
    09-25-2012
    Location
    Gurgaon
    MS-Off Ver
    Excel 2007
    Posts
    25

    Wink Re: Code is sending same chart to all email body .

    Hi All

    i am able to solve the problem.....
    below is the code.
    
    Sub Mail()
    ' Don't forget to copy the function RangetoHTML in the module.
    ' Working in Office 2000-2010
        Dim rng As Range
        Dim OutApp As Object
        Dim OutMail As Object
        Dim rCell As Range, sAddys As String
        Dim sCell As Range, tAddys As String
        
        
        Set rng = Nothing
        On Error Resume Next
        'Only the visible cells in the selection
        Set rng = Selection.SpecialCells(xlCellTypeVisible)
        'You can also use a range if you want
        Set rng = Sheets("Snapshot").Range("A3:J9").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
            With ThisWorkbook.Sheets("Sheet1")
            For Each rCell In .Range("A3", .Cells(.Rows.Count, "A").End(xlUp))
            If rCell.Value <> "" Then sAddys = sAddys & rCell.Value & "; "
                
            Next rCell
        End With
        OutMail.To = sAddys
        
        With ThisWorkbook.Sheets("Sheet1")
            For Each sCell In .Range("B3", .Cells(.Rows.Count, "B").End(xlUp))
                If sCell.Value <> "" Then tAddys = tAddys & sCell.Value & "; "
                
           Next sCell
           
        End With
        OutMail.cc = tAddys
        
        .Subject = "Validation Dashboard Till - " & " " & Date
        .HTMLBody ="<img src=" & " "'" & C & "' >" 
        
        .Attachments.Add A
        .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-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)
            .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 Sushil.thakur; 04-16-2013 at 02:37 AM.

+ Reply to Thread

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