Results 1 to 1 of 1

Excel 2010 Export and email each row to different person

Threaded View

  1. #1
    Registered User
    Join Date
    03-13-2014
    Location
    Denver, CO
    MS-Off Ver
    Excel 2010
    Posts
    39

    Excel 2010 Export and email each row to different person

    G'Day to the Group

    Have Spreadsheet with 800 + Names, 1 name per row, and their contact information. Need to Send an email automatically to each person with their data in columns A-Z, so they can verify their Emergency Data.

    Below is the code I am using, however this sends only Columns A-J. (I need to send Columns A-Z) When I changed the code to reflect column Z instead of Column J it defaults back to Column J. Below is the code from Line 15 (approx)
    [I][B]Set FilterRange = Ash.Range("A1:J" & Ash.Rows.Count) (If I change column from Column J to Column z, the report defauts back to column J, and I need columns thru A-Y.

    Attached is a small spreadsheet with fictitious sample data to test
    VBA Code is below: Thanks in advance
    Code to send email with Excel spreadsheet attached.


    Sub Send_Row_Or_Rows_Attachment_2()

    Dim OutApp As Object
    Dim OutMail As Object
    Dim rng As Range
    Dim Ash As Worksheet
    Dim Cws As Worksheet
    Dim Rcount As Long
    Dim Rnum As Long
    Dim FilterRange As Range
    Dim FieldNum As Integer
    Dim NewWB As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    On Error GoTo cleanup
    Set OutApp = CreateObject("Outlook.Application")
    With Application
    .EnableEvents = False
    .ScreenUpdating = False
    End With
    'Set filter sheet, you can also use Sheets("MySheet")
    Set Ash = ActiveSheet
    'Set filter range and filter column (column with e-mail addresses)
    Set FilterRange = Ash.Range("A1:J" & Ash.Rows.Count)
    FieldNum = 2 'Filter column = B because the filter range start in column A
    'Add a worksheet for the unique list and copy the unique list in A1
    Set Cws = Worksheets.Add
    FilterRange.Columns(FieldNum).AdvancedFilter _
    Action:=xlFilterCopy, _
    CopyToRange:=Cws.Range("A1"), _
    CriteriaRange:="", Unique:=True
    'Count of the unique values + the header cell
    Rcount = Application.WorksheetFunction.CountA(Cws.Columns(1))
    'If there are unique values start the loop
    If Rcount >= 2 Then
    For Rnum = 2 To Rcount
    'If the unique value is a mail addres create a mail
    If Cws.Cells(Rnum, 1).Value Like "?*@?*.?*" Then
    'Filter the FilterRange on the FieldNum column
    FilterRange.AutoFilter Field:=FieldNum, _
    Criteria1:=Cws.Cells(Rnum, 1).Value
    'Copy the visible data in a new workbook
    With Ash.AutoFilter.Range
    On Error Resume Next
    Set rng = .SpecialCells(xlCellTypeVisible)
    On Error GoTo 0
    End With
    Set NewWB = Workbooks.Add(xlWBATWorksheet)
    rng.Copy
    With NewWB.Sheets(1)
    .Cells(1).PasteSpecial Paste:=8
    .Cells(1).PasteSpecial Paste:=xlPasteValues
    .Cells(1).PasteSpecial Paste:=xlPasteFormats
    .Columns("A:B").Delete
    .Cells(1, 1).Select
    Application.CutCopyMode = False
    End With
    'Create a file name
    TempFilePath = Environ$("temp") & "\"
    TempFileName = "Output " & Ash.Parent.Name _
    & " " & Format(Now, "dd-mmm-yy h-mm-ss")
    If Val(Application.Version) < 12 Then
    'You use Excel 97-2003
    FileExtStr = ".xls": FileFormatNum = -4143
    Else
    'You use Excel 2007-2013
    FileExtStr = ".xlsx": FileFormatNum = 51
    End If
    'Save, Mail, Close and Delete the file
    Set OutMail = OutApp.CreateItem(0)
    With NewWB
    .SaveAs TempFilePath & TempFileName _
    & FileExtStr, FileFormat:=FileFormatNum
    On Error Resume Next
    With OutMail
    .To = Cws.Cells(Rnum, 1).Value
    .Subject = "CEPP Needs to verify your emergency contact information for the ReadyOp Alert system, Please make additions corrections to your emergency contact information or Opt Out, if you do not wish to be included in ReadyOp"
    .Attachments.Add NewWB.FullName
    .Body = " Attached as an Excel 2010 file is your emergency contact information, please make additions, corrections, or Opt Out. Email reply to Dana Hoffman [email protected], 303-863- 9600”
    . Display .Send 'Or use Send
    End With
    On Error GoTo 0
    .Close savechanges:=False
    End With
    Set OutMail = Nothing
    Kill TempFilePath & TempFileName & FileExtStr
    End If
    'Close AutoFilter
    Ash.AutoFilterMode = False
    Next Rnum
    End If
    cleanup:
    Set OutApp = Nothing
    Application.DisplayAlerts = False
    Cws.Delete
    Application.DisplayAlerts = True
    With Application
    .EnableEvents = True
    .ScreenUpdating = True
    End With

    End Sub
    Attached Files Attached Files
    dana hoffman

Thread Information

Users Browsing this Thread

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

Similar Threads

  1. [SOLVED] Getting a outlook warning (2010) while sending an email through excel 2010 macro
    By Kiran Kurapati in forum Excel Programming / VBA / Macros
    Replies: 6
    Last Post: 03-26-2014, 12:21 PM
  2. export outlook 2007 email into excel with subject and body of email
    By akulka58 in forum Excel Programming / VBA / Macros
    Replies: 1
    Last Post: 02-25-2013, 02:37 PM
  3. Excel 2010 to auto-generate an email to recipients in outlook 2010
    By dmcmillo in forum Excel Programming / VBA / Macros
    Replies: 0
    Last Post: 06-12-2012, 05:13 PM
  4. Having Excel 2010 auto-generate an email to recipients in outlook 2010
    By dmcmillo in forum Excel Programming / VBA / Macros
    Replies: 2
    Last Post: 06-10-2012, 08:23 AM
  5. Excel VBA Email More than 1 Person
    By zit1343 in forum Excel General
    Replies: 1
    Last Post: 07-18-2011, 11:20 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