Как отфильтровать каждое имя в столбце и создать электронную почту для каждого отфильтрованного имени? - PullRequest
0 голосов
/ 08 марта 2019

Итак, у меня есть этот код, который фильтрует 1 имя в столбце и отправляет электронное письмо отфильтрованному пользователю вместе с его данными. Как я могу сделать для следующего цикла, который будет фильтровать другие имена в столбце А, которые будут делать то же самое при отправке электронной почты?

Sub Button1_Click()

Dim Outlook As Object
Dim Email As Object
Dim opmail As Object
Dim page As Object
Dim outApp As Object
Dim outRec As Object
Dim outAL As Object
Dim outTI As Object
Dim newSh As Worksheet
'Dim recName As String
Dim rng As Range

myFile = Application.GetOpenFilename(, , "Browse for Workbook")
If myFile = False Then Exit Sub
Set wb = Workbooks.Open(myFile)
'Set wb = ActiveSheet

wb.ActiveSheet.Range("callbackqueue[#ALL]").AutoFilter Field:=1, 
Criteria1:=Array("CALMA"), Operator:=xlAnd

'Next

 Set outApp = CreateObject("Outlook.Application")
 Set outAL = outApp.Session.AddressLists.Item("Global Address List")
 Set outTI = outApp.CreateItem(0)


bankSID = InputBox("Enter SID")
Set outRec = outTI.Recipients.Add(bankSID)
outRec.Resolve
recName = outRec.AddressEntry.Name

'With Email
With outTI
    .To = bankSID
    .Subject = "Subject Line"
    .Body = "See assigned information below" & vbCrLf & "Regards"
    .Display

    'Set opmail = Email.GetInspector
    Set outAL = outTI.GetInspector
    Set page = outAL.WordEditor


    ActiveSheet.Range("A6:E16").Copy

    page.Application.Selection.Start = Len(.Body)
    page.Application.Selection.End = page.Application.Selection.Start
    page.Application.Selection.PasteandFormat (wdFormatPlainText)
    .Display
    .Send
    Set page = Nothing
    Set opmail = Nothing





End With

Set Email = Nothing
Set Outlook = Nothing
End Sub

Извините за вопрос, который все еще начинает понимать VB.

1 Ответ

0 голосов
/ 09 марта 2019

Aquinokj, если вы хотите, чтобы все люди в именованном диапазоне, callbackqueue, Тогда вы можете сделать цикл For Each. Или вы можете использовать InputBox для присвоения значения - множество способов, просто нужно больше информации ... Но ...

Просто пример:

Option Explicit

Sub CopyStuff()

    Dim ws As Worksheet
    Dim cell As Range

    Set ws = ThisWorkbook.ActiveSheet

    For Each cell In ws.UsedRange.Columns(1).Cells
        wb.ActiveSheet.Range("callbackqueue[#ALL]").AutoFilter Field:=1, _
        Criteria1:=Array(cell.Value), Operator:=xlAnd

        'rest of code here

    Next

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...