我目前有一个电子表格,可以从另一张纸中提取信息。它使用一系列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命令来实现:
作为电子表格正在执行的操作的visual example,请参阅超链接。基本思想是,它从INFO选项卡中获取详细信息,并使用VLookup公式在Proforma选项卡中生成消息(出于保护数据的原因,我将消息涂黑了)。如果有更好的方法,请让我知道-我总是很乐意了解更多信息!
我对此进行了大量研究,发现可以创建用于执行此操作的电子邮件,但是,我一直在努力使其正常运行,并且希望获得一些帮助!
谢谢。
答案 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作为邮件客户端,对我来说效果很好-试试看!