+ Reply to Thread
Results 1 to 3 of 3

VBA autofilter data in column and send email, don't continue if filtered table is empty

  1. #1
    Registered User
    Join Date
    10-12-2023
    Location
    Slovakia
    MS-Off Ver
    2023
    Posts
    5

    VBA autofilter data in column and send email, don't continue if filtered table is empty

    Hello please for advice. I have this macro, working OK very good, doing what I want. The only thing I need to add there, is skip macro and dont send any email if autofilter is empty.
    Please help.

    Sub FIRSTWARN()

    '-----Sheets
    Dim Database As Worksheet
    Dim Newsheet As Worksheet

    '-----Define Sheet names
    Set Database = Worksheets("Matka")
    Application.DisplayAlerts = False

    Sheets.Add.Name = "RIESIT 7pred"
    Set Newsheet = Worksheets("RIESIT 7pred")

    Newsheet.Range("B2:I200").ClearContents
    LastRow = Database.Cells(Rows.Count, 1).End(xlUp).Row
    With Database

    .AutoFilterMode = False
    With .Range("B1:O" & LastRow)
    .AutoFilter Field:=5, Criteria1:="ANO", Operator:=xlFilterValues
    .SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("RIESIT 7pred").Range("A1")
    Columns("A:A").ColumnWidth = 40
    Columns("B:D").ColumnWidth = 30

    End With

    End With

    Dim rng As Range
    Dim OutApp As Object
    Dim OutMail As Object
    Dim StrBody As String


    Set rng = Nothing
    On Error Resume Next
    'Only the visible cells in the selection
    'Set rng = Selection.SpecialCells(xlCellTypeVisible)
    'Excel Range to Copy
    StrBody = "Dobry den, upozornujem na ulohy 7 dni pred terminom:"
    Set rng = ThisWorkbook.Worksheets("RIESIT 7pred").Range("A1:D200").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
    .To =""
    .cc = ""
    .BCC = ""
    .Subject = "PRIPOMIENKA: Ulohy 7 dni pred terminom "
    .HTMLBody = StrBody & rangetoHTML(rng)
    '.Attachments.Add ActiveWorkbook.FullName
    .Display
    'or use .Display
    End With
    On Error GoTo 0
    With Application
    .EnableEvents = True
    .ScreenUpdating = True
    End With



    Sheets("RIESIT 7pred").Delete


    Application.DisplayAlerts = True

    If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData

    Set OutMail = Nothing
    Set OutApp = Nothing
    End Sub
    Function rangetoHTML(rng As Range)
    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
    10-16-2023
    Location
    Poland
    MS-Off Ver
    Excel 2019 32bit WIN10
    Posts
    88

    Re: VBA autofilter data in column and send email, don't continue if filtered table is empt

    Write the beginning of the procedure like this:
    Please Login or Register  to view this content.

  3. #3
    Registered User
    Join Date
    10-12-2023
    Location
    Slovakia
    MS-Off Ver
    2023
    Posts
    5

    Re: VBA autofilter data in column and send email, don't continue if filtered table is empt

    works great, really many many thanks

+ 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. Send email with VBA through outlook after data is filtered
    By Roma1r in forum Excel Programming / VBA / Macros
    Replies: 11
    Last Post: 06-23-2021, 03:25 PM
  2. [SOLVED] Send email if criteria in a column, matches name in a lookup table
    By MushroomFace in forum Excel Programming / VBA / Macros
    Replies: 3
    Last Post: 02-02-2021, 12:32 PM
  3. Replies: 8
    Last Post: 03-06-2020, 12:07 PM
  4. [SOLVED] Clear Filtered Data From Autofilter Result on Table
    By Vlad717 in forum Excel Programming / VBA / Macros
    Replies: 4
    Last Post: 07-20-2019, 01:46 PM
  5. Userform that will ad data to specified table and send email with notification
    By AndrzejSnk in forum Excel Programming / VBA / Macros
    Replies: 1
    Last Post: 02-09-2014, 02:17 PM
  6. Send data table from Excel to outlook as Email
    By praky in forum Excel Programming / VBA / Macros
    Replies: 2
    Last Post: 01-16-2014, 04:31 PM
  7. Loop through autofilter and send via email to address in column L
    By madamson86 in forum Excel Programming / VBA / Macros
    Replies: 6
    Last Post: 09-02-2010, 10:01 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