Excel宏从活动行发送电子邮件信息

问题描述:

我想开始在Excel中创建一个宏,它允许我发送带有活动行内容的电子邮件(例如,单击一行,选择其所有内容) 。我需要从该行上的特定单元格获取电子邮件,并将其分配给“发送电子邮件到”字段。主题字段应该有一个标题并在其末尾添加特定单元格的数据(在选定的行上)。在正文中,我需要包含选定行的内容。在选择每个单元格的内容之前,我需要输入标题。我可以直接通过Excel发送电子邮件,还是至少可以通过打开Outlook发送电子邮件并使用宏准备好所有数据?Excel宏从活动行发送电子邮件信息

这是我需要什么(在电子表格中显示):

FirstName LastName PhoneNumber 
Dan  Daniels 123 
Jim  Jameson 321 

如果第二行是选择行。电子邮件应该是这样的:

To: [email protected] 
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 

从列中的数据只是简单的字符,名称,数量或emails.And其实我有35列,但只需要上述那些。谢谢!

那么,我会推荐第三栏的人的电子邮件。

让我们假设你已经同意补充。你的数据会看起来像:

FirstName LastName PhoneNumber Email 
Dan  Daniels 123   [email protected] 

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

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

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

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 

前提条件:

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

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" 
+0

谢谢!我是从这些事情开始的,但是我想我必须在Excel的宏工具中创建这个宏。关于数据,我有三个以上的列,我只是将这些列作为示例添加,以便我可以扩展其余部分的代码。我会用你提供的代码尝试一些东西,然后回头看看我可以如何处理它。再次感谢! – 2015-03-03 13:57:42

+0

没问题@DantèsCristo!我们一起解决吧! :) – 2015-03-03 14:00:46

+0

我试图在VDB中创建一个宏,但是当试图保存您提供给我的确切代码时,它给了我这个错误:以下功能无法保存在无宏工作簿中: VB Project To使用这些功能保存文件,单击否,然后在“文件类型”列表中选择启用宏的文件类型。任何想法我做错了什么?我启用了宏。 – 2015-03-04 11:32:44