【发布时间】:2023-03-22 04:30:01
【问题描述】:
大约一个月前,我已经发布了一个与我当前的问题有些相似的问题。
Sending Outlook Email with multiple recipients from Excel file
但是今天,我想开发不关心 TO 字段是否仅包含 1 个收件人以及 CC 可能为 EMPTY 的代码。我能够想出这两种类型的代码:
A.
'Set Recipients
Range("A2").Select
Set Recipient = Range(ActiveCell, ActiveCell.End(xlDown))
'Set Recipients
Range("B2").Select
Set CC = Range(ActiveCell, ActiveCell.End(xlDown))
On Error Resume Next
With OutlookMailItem
.Display
'Assign Recipients in TO field
For Each sTo In Recipient
Set myRecipient = OutlookMailItem.Recipients.Add(sTo)
myRecipient.Type = olTo
myRecipient.Resolve
If Not myRecipient.Resolved Then
myRecipient.Delete
End If
Next sTo
'Assign CCs in CC field
For Each sCc In CC
Set myCc = OutlookMailItem.Recipients.Add(sCc)
myCc.Type = olCC
myCc.Resolve
If Not myCc.Resolved Then
myCc.Delete
End If
Next sCc
End With
但是,这些代码仅适用于两个或更多电子邮件地址。当我尝试只为 TO 提供 1 个值而为 CC 不提供值时,它显示运行时错误“-2147352567 (80020009)”:在“收件人”、“抄送”或“密件抄送”框中必须至少有一个姓名或联系人组。
B.
For Each sTo in Recipients
receiver = receiver & sTo.Value & ";"
Next
For Each sCc in CC
CCs = CCs & sCc.Value & ";"
Next
但这些代码会导致 Excel 文件无响应。
我的代码有错误吗?或者关于如何使我的 TO 和 CC 字段动态化的任何建议。从某种意义上说是动态的,我可以为 TO 分配 ONE 或 MORE,为 CC 分配 NONE 或 MORE。
【问题讨论】: