发送包含活动线路信息的电子邮件

Send email with information from active line

我正在尝试在 Excel 中构建一个宏,以发送包含活动行内容的电子邮件(例如,单击一行,选择其所有内容)。

我需要从该行的单元格中获取电子邮件地址并将其分配给电子邮件收件人字段。
主题字段应该有一个标题,并在其末尾添加来自所选行的单元格的数据。
在 body 中,我需要包含所选行的内容。
在每个选中的单元格内容之前,我需要输入一个标题。

我可以直接通过 Excel 发送电子邮件,还是可以通过打开 Outlook 并使用宏准备好所有数据来发送电子邮件?

电子表格中显示的内容如下:

FirstName LastName PhoneNumber
Dan       Daniels  123
Jim       Jameson  321

如果第二行是所选行,则电子邮件应如下所示:

To: email@email.com
Subject: Random text - Dan Daniels
Body:

Hello,

FirstName: Dan
LastName: Daniels
PhoneNumber: 123

这是我修改的代码,但出现编译错误:

Sub SendMail()
    Dim OutlookApp As Object: Set OutlookApp = CreateObject("Outlook.Application")
    Dim var As Variant: var = Selection.Value
    Set MyMail = OutlookApp.CreateItem(0)
    With MyMail
        .To = var(1, 35)
        .Subject = "Email for Random Text Text Text Here -" & " " & var(1, 17) & " " & var(1, 18)
        .body = "This is an email informing you that random text aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & vbNewLine & vbNewLine & "Created by: " & var(1, 4) & vbNewLine & "Date Information Posted: " & var(1, 6) & vbNewLine & "Random Data One Showing: " & var(1, 28) & vbNewLine & "Another Random Data: " & var(1, 29) & vbNewLine & "Requester Random First Name: " & var(1, 13) & vbNewLine & "Requester Random Last Name: " & var(1, 14) & vbNewLine & "Requester Random Here E-mail: " & var(1, 15) & vbNewLine & "Requester Random Phone Number: " & var(1, 16) & vbNewLine & "Person's Random First Name: " & var(1, 17) & vbNewLine & "Person's Random Last Name: " & var(1, 18) & vbNewLine & "Person's Random Location: " & var(1, 21)  & vbNewLine & "Person's Random Occupation: " & var(1, 22) & vbNewLine & "Person's Random Hometown: " & var(1, 23) & vbNewLine & "Where he is located: " & var(1, 24) & vbNewLine & "PErson's Email Address: " & var(1, 19) & vbNewLine & "Number of items requested: " & var(1, 8) & vbNewLine & "Requested Items Number: " & var(1, 31) & vbNewLine & "Name of Item: " & var(1, 22) & vbNewLine & vbNewLine & "This is a random text I need to add at the end of the mail, text being quite looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooog random text random text random text random text random text random text"
    End With
    MyMail.send
End Sub

列中的数据是简单的字符、姓名、数字或电子邮件地址。我有 35 列,但只需要以上几列。

好吧,我会推荐第三列,其中包含此人的电子邮件。

假设您已同意添加该内容。您的数据类似于:

FirstName LastName PhoneNumber Email
Dan       Daniels  123         Dan.Daniels@HisCompany.com

我们将创建一个 Outlook 应用程序对象(使用后期绑定)

Dim OutlookApp As Object: Set OutlookApp = CreateObject("Outlook.Application") 

现在我们需要填写我们将在 Outlook 中创建的 MyMail 对象的属性。我们使用 select 而不是活动单元格。

 Dim var as variant: var = selection.value 
 Set MyMail = OutlookApp.CreateItem(0)

现在正在填充属性:

      With MyMail
                .To = var(1,4)
                .Subject = "Random Text" &" "& var(1,1) & " " & var(1,2)
                .body = "Hello," & vbNewLine & "First name: " & var(1, 1) & vbNewLine & "Last Name: " & var(1, 1) & vbNewLine & "Phone number: " & var(1, 2)
            End With 

我们将使用 MyMail 对象的发送方法发送它。

            MyMail.send 

编辑:这是完整子代码。我测试了它并且有效。

Sub SendMail()
Dim OutlookApp As Object: Set OutlookApp = CreateObject("Outlook.Application")
Dim var As Variant: var = Selection.Value
Set MyMail = OutlookApp.CreateItem(0)
          With MyMail
                    .To = var(1, 4)
                    .Subject = "Random Text" & " " & var(1, 1) & " " & var(1, 2)
                    .body = "Hello," & vbNewLine & "First name: " & var(1, 1) & vbNewLine & "Last Name: " & var(1, 2) & vbNewLine & "Phone number: " & var(1, 3)
                End With
                MyMail.send
End Sub

先决条件:

Select 运行 宏之前的行。这是我的数据预览:

我的 Outlook 发件箱:

Edit1: 这是正确的 .body 属性:

.body = "This is an email informing you that random text aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & vbNewLine & vbNewLine & "Created by: " & Var(1, 4) & vbNewLine & "Date Information Posted: " & Var(1, 6) & vbNewLine & "Random Data One Showing: " & Var(1, 28) & vbNewLine & "Another Random Data: " & Var(1, 29) & vbNewLine & _
"Requester Random First Name: " & Var(1, 13) & vbNewLine & "Requester Random Last Name: " & Var(1, 14) & vbNewLine & "Requester Random Here E-mail: " & Var(1, 15) & vbNewLine & "Requester Random Phone Number: " & Var(1, 16) & vbNewLine & "Person's Random First Name: " & Var(1, 17) & vbNewLine & "Person's Random Last Name: " & Var(1, 18) & vbNewLine & "Person's Random Location: " & Var(1, 21) & vbNewLine & "Person's Random Occupation: " & _
Var(1, 22) & vbNewLine & "Person's Random Hometown: " & Var(1, 23) & vbNewLine & "Where he is located: " & Var(1, 24) & vbNewLine & "PErson's Email Address: " & Var(1, 19) & vbNewLine & "Number of items requested: " & Var(1, 8) & vbNewLine & "Requested Items Number: " & Var(1, 31) & vbNewLine & "Name of Item: " & Var(1, 22) & vbNewLine & vbNewLine & _
"This is a random text I need to add at the end of the mail, text being quite looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooog random text random text random text random text random text random text"