Results 1 to 2 of 2

Need help in tweaking VBA Macro

Threaded View

vijey18 Need help in tweaking VBA... 04-10-2014, 05:33 AM
Kaper Re: Need help in tweaking VBA... 04-10-2014, 11:36 AM
  1. #1
    Registered User
    Join Date
    04-07-2014
    Location
    Bangalore,India
    MS-Off Ver
    Excel 2010
    Posts
    1

    Lightbulb Need help in tweaking VBA Macro

    Hi ,

    I have this VBA script from rondebruin . In summary this script looks at the column which has either "yes" or "no" and sends a mail to ppl whose column says "no"

    Here is the example excel activeworksheet.

    Name MailID Amount paid
    vijey abc@gmail.ocm 100
    Everon xyz@gmail.com 0

    I wanted the script to send a mail to the person whose column reads 0. Only the Row of the person reading 0 will be sent to the particular person.


    The code below is what i am trying to tweak and there is one line of interest here:--

    ORIGINAL LINE

    If Cws.Cells(Rnum, 1).Value Like "?*@?*.?*" Then
    This line of code works fine but sends emails to each person irrespective of the column value.

    TWEAKED LINE

     If Cws.Cells(Rnum, 1).Value Like "?*@?*.?*" And Cws.Cells.Offset(Rnum, 3).Value = "100" Then
    This tweaked code is not working.

    Can you please let me know how to tweak this line so that emails can be sent to only people with the triggered Column value.

    Entire code:--
    Sub Send_Row_Or_Rows_Attachment_2()
    'Working in 2000-2013
    'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
        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:H" & 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
                        .Cells(1).Select
                        Application.CutCopyMode = False
                    End With
    
                    'Create a file name
                    TempFilePath = Environ$("temp") & "\"
                    TempFileName = "Your data of " & 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 = "Test mail"
                            .Attachments.Add NewWB.FullName
                            .Body = "Hi there"
                            .Display  '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
    Last edited by Leith Ross; 04-10-2014 at 12:13 PM. Reason: Added Code Tags

Thread Information

Users Browsing this Thread

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

Similar Threads

  1. [SOLVED] Tweaking an Excel 2003 macro
    By nharpaz in forum Excel Programming / VBA / Macros
    Replies: 2
    Last Post: 04-21-2013, 05:03 PM
  2. Tweaking of Macro Code to sort rows
    By swoosh in forum Excel Programming / VBA / Macros
    Replies: 3
    Last Post: 06-22-2012, 02:14 PM
  3. 'SEARCH' Macro Needs Some Tweaking
    By gnrjess in forum Excel Programming / VBA / Macros
    Replies: 0
    Last Post: 05-29-2012, 12:34 PM
  4. Tweaking an Outlook email Macro in Excel
    By John V in forum Excel Programming / VBA / Macros
    Replies: 0
    Last Post: 02-24-2006, 05:25 PM
  5. [SOLVED] Tweaking a Macro to Count Words
    By PGiessler in forum Excel Programming / VBA / Macros
    Replies: 4
    Last Post: 01-13-2006, 07:45 PM

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