2015-06-30 2 views
0

Я хотел бы иметь код, который будет отправлять электронные письма с использованием таблицы excel в качестве источника. адреса электронной почты находятся в таблице, однако они являются дубликатами.Код VBA для отправки персонализированной электронной почты от excel

Я нашел код, который генерирует и посылает по электронной почте для каждой строки/строки, но мне нужно, чтобы он генерировал электронное письмо для нескольких строк, содержащих один и тот же адрес электронной почты.

ПОЖАЛУЙСТА! Измените код так, чтобы он генерировал только email из нескольких строк, содержащих один и тот же адрес электронной почты.
* Я бы сделал это сам, но я не знаю, как, потому что я не знаю, как кодировать в VBA.

код у меня есть до сих пор, и это создает электронную почту для каждой строки, которая не является тем, что я ищу:

Sub email() 
Dim i As Long 
Dim OutApp, OutMail As Object 
Dim strto, strcc, strbcc, strsub, strbody As String 

Set OutApp = CreateObject("Outlook.Application") 
OutApp.Session.Logon 

For i = 1 To Range("c65536").End(xlUp).Row 
Set OutMail = OutApp.CreateItem(0) 

    strto = Cells(i, 8) 
    strsub = "Missing Books" 
    strbody = "Good day," & vbNewLine & _ 
     "We are missing below books:" & vbNewLine & _ 
     Cells(i, 1) & Chr(32) & Cells(i, 2) & Cells(i, 3) & Cells(i, 5) & Cells(i, 6) & vbNewLine & vbNewLine & _ 
     "brgds," & vbNewLine & _ 
     "Alex" 

    With OutMail 
     .To = strto 
     .Subject = strsub 
     .Body = strbody 
     '.Send 
     .display 

    End With 
    On Error Resume Next 

Next 

Set OutMail = Nothing 
Set OutApp = Nothing 
End Sub 

Конечный адрес электронной почты для адреса электронной почты должен выглядеть следующим образом:

до: [email protected]
вопрос: Сообщить!
Здравствуйте!

Вот обзор используемой службы:

Период/Номер/Компания/Count/Продолжительность * строка заголовка строка
201504/900654/ETV/5/89/* данных, включает в себя электронную почту в столбце H строки
201504/900098/ETV/2/24/* данных, включает в себя электронную почту в колонке H

наилучшими пожеланиями, Annu

ПРИМЕЧАНИЕ. Первая строка представляет собой строку заголовка и начиная со второй строки являются ячейками данных. Они исходят из таблицы, как и сообщения электронной почты
ПРИМЕЧАНИЕ. H - это столбец для электронных писем - может быть 10 раз/строк [email protected], и ему требуется только 1 электронная почта, но с информацией, которая поступает до самой ячейки электронной почты.

Edit * This is the table

+0

Вы можете показать выписку из листа, содержащего данные, – Gotrekk

+0

Каждая строка содержит только 1 адрес электронной почты? – Dubison

+0

Я добавил ссылку на исходное сообщение (надеюсь, он работает). Да, каждая строка имеет только один адрес электронной почты, но есть несколько строк с тем же адресом электронной почты. Http://i.stack.imgur.com/7C6eu.png – Annux3

ответ

0

Пожалуйста, смотрите ниже, чтобы сделать строку с каждой строки в столбце, код будет игнорировать повторяющиеся данные, то вы можете использовать эту строку в переменной MAILTO:

enter image description here

Sub uniqueSTR() 
Dim wb As Workbook 
Dim ws As Worksheet 
Dim lastRow As Long 
Dim mailSTR As String 

Set wb = ActiveWorkbook 'Your workbook 
Set ws = wb.Sheets("Sheet2") 'Your sheet name 

lastRow = ws.Range("A" & Rows.Count).End(xlUp).Row 


For i = 1 To lastRow 
    If InStr(mailSTR, Range("A" & i).Value) = 0 Then 
     If mailSTR = "" Then 
      mailSTR = Range("A" & i).Value 
     Else 
      mailSTR = mailSTR & ";" & Range("A" & i).Value '<- Mail seperator is ";" 
     End If 
    End If 
Next 

Range("B1").Value = mailSTR '<- Your result 

End Sub 
+0

Не то, что я искал. Однако мне интересно, можно ли его использовать горизонтально не вертикально, как я понимаю, делается в этом коде. – Annux3

+0

ОК, я думаю, теперь я понял. Извините за то, что вы прямо подходите к заключению. Я попытаюсь соответствующим образом обновить код. – Dubison

Смежные вопросы