Excel VBA创建与VLookup兼容的电子邮件生成器

时间:2018-12-05 22:26:21

标签: excel vba excel-vba email

我目前有一个电子表格,可以从另一张纸中提取信息。它使用一系列Vlookup公式使用Sheet1中客户端的详细信息生成消息。为了发送这些电子邮件,我一直在使用两个宏命令。只需复制范围(B4:L36):

Sub Copy()
Copy Macro
Range("B4:L36").Select
Selection.Copy
End Sub

另一个命令将打开空白电子邮件:

Sub MailIt()
Dim oMailItem As Object
Dim oOLapp As Object
Set oOLapp = CreateObject("Outlook.application")
Set oMailItem = oOLapp.CreateItem(0)
With oMailItem
.To = ""
.CC = ""
.Subject = ""
.Body = ""
.Display
End With
Set oOLapp = Nothing
Set oMailItem = Nothing
End Sub

然后,我将邮件作为图片粘贴到电子邮件正文中。我返回到电子表格,并从E1:J1范围复制生成的标题,并将其粘贴为我的电子邮件主题。最后,我从L2复制收件人地址并将其粘贴到我的电子邮件中并发送。

是否可以使用一种VBA命令来实现:

  1. 查看L2中的地址,并将其粘贴为电子邮件中的收件人地址(假设VLookup公式不会对此产生干扰)。
  2. 从E1:J1复制标题范围并将其粘贴为电子邮件主题。
  3. 复制消息范围(B4:L36)并将其粘贴为电子邮件正文(作为图片)。

作为电子表格正在执行的操作的visual example,请参阅超链接。基本思想是,它从INFO选项卡中获取详细信息,并使用VLookup公式在Proforma选项卡中生成消息(出于保护数据的原因,我将消息涂黑了)。如果有更好的方法,请让我知道-我总是很乐意了解更多信息!

我对此进行了大量研究,发现可以创建用于执行此操作的电子邮件,但是,我一直在努力使其正常运行,并且希望获得一些帮助!

谢谢。

1 个答案:

答案 0 :(得分:1)

每当我需要发送电子表格的一部分时,通常会直接通过Excel(不包括Outlook)进行操作

Sub SendTheStuff()
    Dim strRecipients As String
    Dim strSubject As String

    strRecipients = Worksheets("Sheet 1").Cells(2, 12).Value   'your client's mail adress, assuming it to be on Sheet 1 of your book, adjust to your needs
    strSubject = Worksheets("Sheet 1").Cells(1, 5).Value   'The content of Sheet 1, Cell "E1" - see if you can combine the range you want into one cell to keep code simple - and adjust the Sheet if necessary

    Worksheets("Sheet 1").Range("B4:L36").Select
    With Selection
        ActiveWorkbook.EnvelopeVisible = True
        With ActiveSheet.MailEnvelope
            .Item.Subject = strSubject
            .Item.To = strRecipients
            .Item.Attachments.Add "T:\he\Path\To\An\Attachm.ent"   'you may even add a file in case you need to
            .Item.Send
        End With
    End With

ActiveWorkbook.EnvelopeVisible = False

End Sub

此方法使用Excel作为邮件客户端,对我来说效果很好-试试看!