Excel宏发送包含活动行信息的电子邮件

时间:2015-03-03 12:19:24

标签: excel vba email

我正在尝试在Excel中构建一个宏,它允许我发送包含来自活动行内容的电子邮件(例如,单击一行,选择其所有内容)。我需要从该行的特定单元格中接收电子邮件,并将其分配给“发送电子邮件到”字段。 “主题”字段应具有标题,并在其末尾添加来自特定单元格(在选定行上)的数据。在正文中,我需要包含选定行的内容。在每个选定单元格的内容之前,我需要输入标题。我可以直接通过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

有什么建议我应该如何开始构建这个宏?谢谢!!!

UPDATE!

以下是我修改过的代码并给出了编译错误:

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列,但只需要上面的列。谢谢!

1 个答案:

答案 0 :(得分:1)

好吧,我会推荐第三栏,附上该人的电子邮件。

我们假设您已同意添加该内容。您的数据看起来像:

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

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

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

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

 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对象的send方法发送它。

            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

前提条件:

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

enter image description here

我的Outlook发件箱:

enter image description here

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"