VBAoutlook – 从Excel作为收件人检索电子邮件地址

我想从Excel单元格中检索电子邮件地址,并将其复制为outlook上的收件人。

然而,前景的“To”和“CC”是空的。

input和输出:

单元格A1是我要“发送给”的电子邮件地址。

单元格A2是我想要“抄送”的电子邮件地址。

我的VBA代码:

Sub Button1_Click() Dim OutApp As Object Dim OutMail As Object Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(olMailItem) On Error Resume Next With OutMail .To = Cells("A1") .CC = Cells("A2") .BCC = "" .Subject = "This is the Subject line" End With On Error GoTo 0 Set OutMail = Nothing Set OutApp = Nothing End Sub 

您需要添加收件人,而不是收件人,抄送或密件抄送属性。 这些属性只包含显示名称。 收件人集合应该被用来修改这个属性。 例如:

 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 

您可能会发现以下文章有帮助:

  • 如何:以编程方式创build和发送Outlook消息
  • 如何以编程方式在Outlook中填写“抄送”,“抄送”和“密件抄送”字段

如果删除“On Error Resume Next”,则可以进行debugging。 以下是无效的:

 .To = Cells("A1") .CC = Cells("A2") 

尝试

 .To = Range("A1") .CC = Range("A2") 

我与Recipient有更好的运气:

 'If not defined: 'olBCC=3 'olCC=2 'olTo=1 Set OutMail = Application.CreateItem(olMailItem) Set myRecipient = OutMail.Recipients.Add(Range("A1")) 'myRecipient.Type = olTo 'This is default - use for clarity if desired Set myRecipient = OutMail.Recipients.Add(Range("A2")) myRecipient.Type = olCC 

如果您希望添加多个收件人,则必须一次添加一个收件人