Excel VBA字符串数组到Outlook电子邮件“收件人”字段

问题描述:

我试图创建一个宏,它将从我的Excel工作表中填入一列电子邮件地址并填充Outlook电子邮件中的“收件人”字段。我有基本的工作,我能够创建一个新的Outlook电子邮件与我指定的各种字段值 - 但是,我不知道如何填充多个电子邮件地址到“收件人”字段,一个电子邮件。Excel VBA字符串数组到Outlook电子邮件“收件人”字段

截至目前,我能够创建一个包含所有所需电子邮件地址的数组,但无法弄清楚如何将数组值填充到Outlook“To”字段中。

+0

显示你当前的代码 – 2015-03-31 16:25:50

这是基于尤金的答案,编辑成包括Excel中实现

Sub CreateStatusReportToBoss(addRng as Excel.Range) 
    Dim myItem As Outlook.MailItem 
    Dim myRecipient As Outlook.Recipient 
    Set myItem = Application.CreateItem(olMailItem) 
    For Each cell in addRng 
    Set myRecipient = myItem.Recipients.Add(cell.Value) 
    Next cell 
    myItem.Subject = "Status Report" 
    myItem.Display 
End Sub 
+0

我已经添加了Microsoft Outlook 15引用,然后我也收到错误“对象不支持类型或方法”在第3行(CreateItem)中。 – User5590 2015-07-21 04:37:55

这可能有帮助,但概念与项目有点不同。希望这有助于过去用于类似案例但过程,只会提供maproad。

Sub CreateMail() 

Dim objOutlook As Object 
Dim objMail As Object 
Dim rngTo As Range 
Dim rngCc As Range 
Dim rngSubject As Range 
Dim rngBody As Range 

Set objOutlook = CreateObject("Outlook.Application") 
Set objMail = objOutlook.CreateItem(0) 

With ActiveSheet 
    Set rngTo = .Range("B1") 
    Set rngCc = .Range("B2") 
    Set rngSubject = .Range("B3") 
    Set rngBody = .Range(.Range("B4"), .Range("B4").End(xlDown)) 
End With 
rngBody.Copy 

With objMail 
    .To = rngTo.Value 
    .Cc = rngCc.Value 
    .Subject = rngSubject.Value 
    .Display 
End With 
SendKeys "^({v})", True 

Set objOutlook = Nothing 
Set objMail = Nothing 
Set rngTo = Nothing 
Set rngCc = Nothing 
Set rngSubject = Nothing 
Set rngBody = Nothing 

End Sub 
+0

谢谢大家。我能够完成我正在尝试使用我在此处找到的“字符串浓缩”功能:http://www.cpearson.com/excel/stringconcatenation.aspx 但是,您的解决方案非常直截了当。谢谢! – user1130306 2015-03-31 16:43:50

您可以使用MailItem类的Recipients属性添加多个收件人。它还允许指定收件人的类型:收件人,抄送或密件抄送。

Sub CreateStatusReportToBoss() 
    Dim myItem As Outlook.MailItem 
    Dim myRecipient As Outlook.Recipient 
    Set myItem = Application.CreateItem(olMailItem) 
    Set myRecipient = myItem.Recipients.Add("Dan Wilson") 
    myItem.Subject = "Status Report" 
    myItem.Display 
End Sub