У меня есть список менеджеров и их клиентов на листе «publico».
Мне нужно отправить отчет каждому менеджеру с их клиентами в теле письма.
Например: менеджер «ag1126ct18@teste.com» получит строки 2 и 3 из листа «publico».
Список прилагается здесь: https://drive.google.com/file/d/1jLkrWqZY9s2Kt2vy_cIMMRAd1H5iDCzg/view?usp=sharing
У меня есть несколькофункциональный код, который проходит через таблицу и отправляет электронные письма менеджерам, но каждый раз отправляет одно электронное письмо, если находит менеджера, и повторяет электронное письмо каждый раз, когда находит одно и то же электронное письмо.
Другойпроблема в том, что до сих пор код не добавляет строки в теле письма (не могу понять, как это сделать).
Dim dictMails As Object, k, rw
Dim OutlookApp As Object
Dim cell As Range
Dim corpodoemail As String
Dim AssuntoEmail As String
Dim contator As Integer
contador = 1
Set OutlookApp = CreateObject("Outlook.Application")
'Agrupa as linhas correlatas por destinatário do e-mail
Set dictMails = CreateObject("scripting.dictionary")
For Each cell In Sheets("publico").Range("H2:H2000").Cells
destinatario = cell.value
If Len(destinatario) = 0 Then destinatario = cell.Offset(1, 0).value
If Len(destinatario) > 0 Then
If Not dictMails.exists(destinatario) Then
Set dictMails(destinatario) = New Collection 'to hold the linked rows
End If
dictMails(destinatario).Add cell.Row 'record this row
End If
Next cell
'loop over the distinct recipients and their related rows
For Each k In dictMails.keys
Debug.Print "Recipient: " & k
'build up the email body
'corpodoemail = Sheets("CAPA").Range("F11").value & "<br><br>" & _
Sheets("CAPA").Range("F13").value & "<br><br>"
'etc etc
'add the information from the linked rows
For Each rw In dictMails(k)
Debug.Print " Row: " & rw
With Sheets("publico").Rows(rw)
corpodoemail = "<head><style>table, th, td {border: 1px solid black; border-collapse:" & _
"collapse;}</style></head><body>" & _
"<table style=""width:50%""><tr>" & _
"<th bgcolor=""#D8D8D8"">MCI</th><th bgcolor=""#D8D8D8"">PRODUTO</th>" & _
"<th bgcolor=""#D8D8D8"">DATA</th></tr><tr>" & _
"<th>" & .Cells(1).value & "</th>" & "<th>" & .Cells(2).value & "</th>" & "<th>" & .Cells(4).value & "/" & .Cells(5).value & "</th>" & _
"<th>" & .Cells(12).value & "</th>" & "<th>" & .Cells(12).value & "</th>" & "<th>" & .Cells(14).value & "/" & .Cells(55).value & "</th>"
End With
Next rw
AssuntoEmail = Sheets("CAPA").Range("F8").value
Set Email = OutlookApp.CreateItem(0)
With Email
.To = k
.subject = AssuntoEmail
.HTMLBody = corpodoemail
End With
Email.Send
Next k 'próximo gerente
End Sub
Как я могу изменить этот код таким образом, чтобысценарий отправляет одно электронное письмо каждый раз, когда находит менеджера, и включает в него электронное письмо со списком клиентов?
Чтобы сделать его более понятным:
Клиент 1 и 2 изсписок, принадлежит ветви 1126, менеджеру 18, поэтому скрипт должен отправить и по электронной почте со строкой 2 и3 листа указанному менеджеру.
Возможно ли?