'Add reference: Microsoft Outlook xx.x Library, where xx.x is 14.0, 15.0, 16.0, etc.
Sub Main()
Dim olApp As Outlook.Application, olMail As Outlook.MailItem
Dim a, e, r As Range, c As Range
Dim wb1 As Workbook, wb1Path As String, wb2 As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Dim PathA As String, wbA As Workbook, wbAname As String
'Path to store filtered workbooks to attach
PathA = Environ("temp") & "\"
PathA = ThisWorkbook.Path & "\"
wb1Path = ThisWorkbook.Path & "\Work Book 1.xlsx"
If Len(Dir(wb1Path)) = 0 Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
'On Error GoTo TheEnd
Set wb1 = Workbooks.Open(wb1Path)
Set wb2 = ThisWorkbook
Set ws1 = wb1.Worksheets(1)
Set ws2 = wb2.Worksheets(1)
Set olApp = New Outlook.Application
Set r = ws2.Range("A2", ws2.Range("A2").End(xlDown))
For Each c In r
ws1.UsedRange.AutoFilter 2, c.Value
ws1.UsedRange.SpecialCells(xlCellTypeVisible).Copy
Set wbA = Workbooks.Add
wbA.Worksheets(1).Range("A1").PasteSpecial
Application.CutCopyMode = False
wbA.Worksheets(1).UsedRange.EntireColumn.AutoFit
wbAname = PathA & c.Value & ".xlsx"
wbA.SaveAs wbAname, xlOpenXMLWorkbook
wbA.Close False
Set olMail = olApp.CreateItem(olMailItem)
With olMail
.To = c.Offset(, 1).Value
.Subject = c.Value & " List Attached"
.Body = "See Attachment"
.Attachments.Add wbAname
.Display
'.Send
End With
Kill wbAname
Next c
On Error Resume Next
TheEnd:
wb1.Close False
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
Set olMail = Nothing
Set olApp = Nothing
End Sub