从excel

时间:2015-06-30 08:54:13

标签: excel vba email excel-vba

我希望有一个代码可以使用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封电子邮件,但信息来自电子邮件单元本身。

编辑* This is the table

1 个答案:

答案 0 :(得分: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