У меня есть список, который содержит: - клиенты;- менеджер электронной почты;- электронная почта главного менеджера;
Я пытаюсь отправить электронную почту, используя VBA и Outlook, таким образом, что каждый раз, когда цикл находит одного менеджера (я проверяю электронную почту),он посылает каждому клиенту, указанному для этого менеджера.
Если в филиале не указана электронная почта менеджера, электронная почта должна отправляться главному менеджеру (например, филиал 1236 получит одно электронное письмо). (главному менеджеру, с несколькими клиентами).
В теле письма будет предварительно отформатированный текст, а после этого список листов со списком клиентов.
У меня естьнекоторые проблемы:
а) перечислить клиентов филиала от листа до тела письма;б) переходить от следующего менеджера после первого электронного письма вместо повторения электронного письма для одного и того же менеджера каждый раз, когда цикл находит одного и того же менеджера. c) регистрация почты, отправленной в столбце J.
Это лист с некоторыми отчетами: https://drive.google.com/file/d/1Qo-DceY8exXLVR7uts3YU6cKT_OOGJ21/view?usp=sharing
Мой цикл работает несколько хорошо, но я считаю, что мне нужен другой подходчтобы достичь этого.
Private Sub CommandButton2_Click() 'envia o email com registro de log
Dim OutlookApp As Object
Dim emailformatado As Object
Dim cell As Range
Dim destinatario As String
Dim comcopia As String
Dim assunto As String
'Dim body_ As String
Dim anexo As String
Dim corpodoemail As String
'Dim publicoalvo As String
Set OutlookApp = CreateObject("Outlook.Application")
'Loop para verificar se o e-mail irá para o gerente da carteira ou para o gerente geral
For Each cell In Sheets("publico").Range("H2:H2000").Cells
If cell.Row <> 0 Then
If cell.Value <> "" Then 'Verifica se carteira possui gerente.
destinatario = cell.Value 'Email do gerente da carteira.
Else
destinatario = cell.Offset(0, 1).Value 'Email do Gerente Geral.
End If
assunto = Sheets("CAPA").Range("F8").Value 'Assunto do e-mail, conforme CAPA.
'publicoalvo = cell.Offset(0, 2).Value
'body_ = Sheets("CAPA").Range("D2").Value
corpodoemail = Sheets("CAPA").Range("F11").Value & "<br><br>" & _
Sheets("CAPA").Range("F13").Value & "<br><br>" ' & _
Sheets("CAPA").Range("F7").Value & "<br><br><br>"
'comcopia = cell.Offset(0, 3).Value 'Caso necessário, adaptar para enviar email com cópia.
'anexo = cell.Offset(0, 4).Value 'Caso necessário, adaptar para incluir anexo ao email.
'Montagem e envio dos emails.
Set emailformatado = OutlookApp.CreateItem(0)
With emailformatado
.To = destinatario
'.CC = comcopia
.Subject = assunto
.HTMLBody = corpodoemail '& publicoalvo
'.Attachments.Add anexo
'.Display
End With
emailformatado.Send
Sheets("publico").Range("J2").Value = "enviado"
End If
Next
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Я почти уверен, что этот цикл бесполезен, но я не могу найти лучшего способа добиться этого.
Можете ли вы мне помочь?