【问题标题】:Send email with information from active line从活动线路发送包含信息的电子邮件
【发布时间】:2021-06-30 06:43:08
【问题描述】:

我正在尝试在 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

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

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

【问题讨论】:

    标签: excel vba email outlook


    【解决方案1】:

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

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

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

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

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

    现在我们需要填写将要在 Outlook 之外创建的 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
    

    前置条件:

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

    我的 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"
    

    【讨论】:

    • 谢谢!我是这些事情的开始,但是我认为我必须在 Excel 的宏工具中创建这个宏。关于数据,我有超过 3 列,我只是添加了这些作为示例,以便我可以扩展其余部分的代码。我会用你提供的代码尝试一些事情,然后回来看看我如何处理它。再次感谢!
    • 没问题@DantèsCristo!我们会一起解决的! :)
    • 嗯。您需要从保存对话框中将 Excel 电子表格的扩展名更改为 xlsm! @DantèsCristo
    • 你有编译错误。我现在在答案中编辑了正确的.body
    • 空格后跟下划线告诉 VBA 或 (VB.NET) IDE 当前语句尚未完成,但在下一行继续。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    相关资源
    最近更新 更多