+ Reply to Thread
Results 1 to 5 of 5

Macro to email sheet

Hybrid View

  1. #1
    Forum Contributor
    Join Date
    07-12-2018
    Location
    South Africa
    MS-Off Ver
    Office 2024
    Posts
    2,888

    Macro to email sheet

    I have a macro to email and attach a sheet in Outlook

    the Macro works well, and attaches the correct sheet , but I want the macro amended so that name of sheet "Detailed Report" shows as name of sheet attached

    Your assistance is most appreciated in resolving this



     Sub Email_Sheet()
    Sheets("Detailed Report").Activate
    'ThisWorkbook.Activate                           'start in THIS workbook
    ztext = [bodytext]                              'read in text from named cell
    Zsubject = [subjectText]
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
        Dim FileExtStr As String
        Dim FileFormatNum As Long
        Dim Sourcewb As Workbook
        Dim Destwb As Workbook
        Dim TempFilePath As String
        Dim TempFileName As String
        Dim OutApp As Object
        Dim OutMail As Object
        Dim Stringbody As String
        
        
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
        End With
    
        Set Sourcewb = ActiveWorkbook
    
    
       
    
        'Copy the ActiveSheet to a new workbook
        Sheets("Detailed Report").Copy
        Set Destwb = ActiveWorkbook
    
        'Determine the Excel version and file extension/format
        With Destwb
            If Val(Application.Version) < 12 Then
                'You use Excel 97-2003
                FileExtStr = ".xls": FileFormatNum = -4143
            Else
                'You use Excel 2007-2013
                Select Case Sourcewb.FileFormat
                Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
                Case 52:
                    If .HasVBProject Then
                        FileExtStr = ".xlsm": FileFormatNum = 52
                    Else
                        FileExtStr = ".xlsx": FileFormatNum = 51
                    End If
                Case 56: FileExtStr = ".xls": FileFormatNum = 56
                Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
                End Select
            End If
        End With
    
        'Change all cells in the worksheet to values if you want
           
           With Sheets(1).UsedRange
        .Value = .Value
    End With
           
           
            Application.CutCopyMode = False
    
    
      
    
        'Save the new workbook/Mail it/Delete it
        TempFilePath = Environ$("temp") & "\"
        TempFileName = "" & Sourcewb.Sheets(1).Name & " " & Format(Now, "dd-mmm-yy h-mm-ss")
    
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
    
        With Destwb
            .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
            On Error Resume Next
                    With OutMail
               .To = Join(Application.Transpose(Sheets("Detailed Report").Range("T1:T2").Value), ";")
               
               .CC = ""
               .BCC = ""
               .Subject = Zsubject
               .Body = ztext
               
                .Attachments.Add Destwb.FullName
                'You can add other files also like this
                '.Attachments.Add ("C:\test.txt")
                .display   'Use .send to send automatically or  .Display to check email before sending
            End With
            On Error GoTo 0
            .Close savechanges:=False
        End With
    
        'Delete the file you have send
        Kill TempFilePath & TempFileName & FileExtStr
    
        Set OutMail = Nothing
        Set OutApp = Nothing
    
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
        End With
        
        Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    End Sub

  2. #2
    Valued Forum Contributor dotchiejack's Avatar
    Join Date
    05-21-2015
    Location
    Antwerp,Belgium
    MS-Off Ver
    2016
    Posts
    507

    Re: Macro to email sheet

    Do you mean this?
    Change
    TempFileName = "" & Sourcewb.Sheets(1).Name & " " & Format(Now, "dd-mmm-yy h-mm-ss")
    into
    TempFileName = Sourcewb.Sheets(1).Name
    or
    TempFileName = "Detailed Report"
    Click the * Add Reputation below to say thanks.

  3. #3
    Registered User
    Join Date
    01-29-2020
    Location
    Kraków, Poland
    MS-Off Ver
    Office 365
    Posts
    10

    Re: Macro to email sheet

    Try adding
    .Attachments.Items(0).DisplayName = "Detailed Report"
    after adding your 'Destwb'.

    So your code will look like this:
    Sub Email_Sheet()
    Sheets("Detailed Report").Activate
    'ThisWorkbook.Activate                           'start in THIS workbook
    ztext = [bodytext]                              'read in text from named cell
    Zsubject = [subjectText]
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
        Dim FileExtStr As String
        Dim FileFormatNum As Long
        Dim Sourcewb As Workbook
        Dim Destwb As Workbook
        Dim TempFilePath As String
        Dim TempFileName As String
        Dim OutApp As Object
        Dim OutMail As Object
        Dim Stringbody As String
        
        
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
        End With
    
        Set Sourcewb = ActiveWorkbook
    
    
       
    
        'Copy the ActiveSheet to a new workbook
        Sheets("Detailed Report").Copy
        Set Destwb = ActiveWorkbook
    
        'Determine the Excel version and file extension/format
        With Destwb
            If Val(Application.Version) < 12 Then
                'You use Excel 97-2003
                FileExtStr = ".xls": FileFormatNum = -4143
            Else
                'You use Excel 2007-2013
                Select Case Sourcewb.FileFormat
                Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
                Case 52:
                    If .HasVBProject Then
                        FileExtStr = ".xlsm": FileFormatNum = 52
                    Else
                        FileExtStr = ".xlsx": FileFormatNum = 51
                    End If
                Case 56: FileExtStr = ".xls": FileFormatNum = 56
                Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
                End Select
            End If
        End With
    
        'Change all cells in the worksheet to values if you want
           
           With Sheets(1).UsedRange
        .Value = .Value
    End With
           
           
            Application.CutCopyMode = False
    
    
      
    
        'Save the new workbook/Mail it/Delete it
        TempFilePath = Environ$("temp") & "\"
        TempFileName = "" & Sourcewb.Sheets(1).Name & " " & Format(Now, "dd-mmm-yy h-mm-ss")
    
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
    
        With Destwb
            .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
            On Error Resume Next
                    With OutMail
               .To = Join(Application.Transpose(Sheets("Detailed Report").Range("T1:T2").Value), ";")
               
               .CC = ""
               .BCC = ""
               .Subject = Zsubject
               .Body = ztext
               
                .Attachments.Add Destwb.FullName
                .Attachments.Items(0).DisplayName = "Detailed Report"
                'You can add other files also like this
                '.Attachments.Add ("C:\test.txt")
                .display   'Use .send to send automatically or  .Display to check email before sending
            End With
            On Error GoTo 0
            .Close savechanges:=False
        End With
    
        'Delete the file you have send
        Kill TempFilePath & TempFileName & FileExtStr
    
        Set OutMail = Nothing
        Set OutApp = Nothing
    
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
        End With
        
        Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    End Sub

  4. #4
    Forum Contributor
    Join Date
    07-12-2018
    Location
    South Africa
    MS-Off Ver
    Office 2024
    Posts
    2,888

    Re: Macro to email sheet

    Thanks for the help guys


    The solution provided by dotchiejack worked perfectly

  5. #5
    Valued Forum Contributor dotchiejack's Avatar
    Join Date
    05-21-2015
    Location
    Antwerp,Belgium
    MS-Off Ver
    2016
    Posts
    507

    Re: Macro to email sheet

    Glad to help,thanks for the rep

+ 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. Can't run email-macro if sheet is locked
    By HereComesTheBoom in forum Excel Programming / VBA / Macros
    Replies: 1
    Last Post: 06-17-2019, 06:59 AM
  2. Macro to email range instead of the whole sheet
    By igoodable in forum Excel Programming / VBA / Macros
    Replies: 5
    Last Post: 07-21-2016, 11:49 AM
  3. Macro vba auto email runtime error when having difrent sheet to name range sheet open
    By no1freeman in forum Excel Programming / VBA / Macros
    Replies: 1
    Last Post: 02-18-2015, 01:35 AM
  4. [SOLVED] Email sheet macro problem
    By andysmith84 in forum Excel Programming / VBA / Macros
    Replies: 8
    Last Post: 09-30-2013, 08:00 AM
  5. Email Macro - From excel sheet to Outlook email macro
    By juanes in forum Excel Programming / VBA / Macros
    Replies: 3
    Last Post: 05-30-2013, 01:59 PM
  6. Macro to PDF a sheet in workbook and email (outlook) to an email address in a cell
    By paul_sykes00 in forum Excel Programming / VBA / Macros
    Replies: 9
    Last Post: 12-17-2012, 12:54 AM
  7. Can you email a sheet with a macro within?
    By Julesdude in forum Excel Programming / VBA / Macros
    Replies: 1
    Last Post: 06-17-2010, 10:22 AM

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