我有一个创建&的VBA脚本保存草稿电子邮件。要添加收件人,它会从链接的Excel表中提取一个字符串,然后将其添加到“收件人”对象中。
对于包含单个收件人的电子邮件,这就像魅力一样。所有用户需要做的就是打开草稿,花5秒钟查看,然后点击发送。
多个联系人同时出现问题(例如“a@aol.com; b@aol.com; c@aol.com”)。当用户点击发送时,Outlook将弹出一个检查名称对话框,没有任何建议。用户可以通过单击“收件人”字段并输入虚拟分号来触发自动解析来解决此问题。我想避免这种情况,因为这个过程一次创建了超过一百封电子邮件,需要单独审核。
环顾四周,我发现并尝试了Recipients.ResolveAll,返回false。我怀疑原因是Outlook正在尝试立即解决整个收件人字符串而不是单独解决。所以我的问题是:如何让Outlook停止显示此Check Names对话框?我是否需要通过我的电子邮件字符串循环并解析各个电子邮件?
Sub CreateEmail(id as Integer)
Dim OlApp As Outlook.Application
Dim ObjMail As Outlook.MailItem
Dim Recipients As Outlook.Recipients
Dim CurrentRecipient As Outlook.Recipient
Set OlApp = CreateObject("Outlook.Application")
Set ObjMail = OlApp.CreateItem(olMailItem)
Set Recipients = ObjMail.Recipients
Dim StrEmailTo As String
StrEmailTo = CurrentDb.OpenRecordset( _
"Select [Emails] from LU_Contacts where id=" & id & ";").Fields(0)
Set CurrentRecipient = Recipients.Add(StrConv(StrEmailTo, 3))
CurrentRecipient.Type = olTo
...
Objmail.Save
答案 0 :(得分:3)
Recipients.Add
只需一个电子邮件地址。
如果您希望拥有多个收件人,请为每个收件人致电Recipients.Add
。
如果您的字符串以;
分隔格式返回,则类似于:
dim EmailList as variant
dim NumEmails as long
dim AddEmailLoop as long
EmailList=split(StrEmailTo,";")
NumEmails=UBound(EmailList)
For AddEmailLoop=0 to NumEmails
Recipients.add(EmailList(AddEmailLoop))
next
应该允许你添加整个列表