我希望有一个代码可以使用excel表作为源发送电子邮件。电子邮件地址在表格中,但它们是重复的。
我找到了为每行/每行生成并发送电子邮件的代码,但我需要它为包含相同电子邮件地址的多行生成电子邮件。
请!修改代码,使其仅包含来自包含相同电子邮件地址的多行的 1 电子邮件。
*我会自己做,但我不知道如何因为我不知道如何在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
电子邮件地址的最终电子邮件应如下所示:
to:test@email.com
主题:报告!
你好!以下是使用过的服务的概述:
期间/编号/公司/计数/期限* 标题行
201504/900654 / ETV / 5/89 / * 数据行,包括H栏中的电子邮件
201504/900098 / ETV / 2/24 / * 数据行,包括列中的电子邮件 H祝福,Annu
注意:第一行是标题行,从第二行开始是数据单元格。他们来自一张桌子,电子邮件也是如此 注意:H是电子邮件的列 - 可以有10次/行test@email.com,它只需要1封电子邮件,但信息来自电子邮件单元本身。
答案 0 :(得分:0)
请看下面为列中的每一行创建一个字符串,代码将忽略重复数据,然后您可以在mailto变量中使用该字符串:
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