使用VBA批量发送邮件时,有多个收件人时用逗号隔开(如邮箱A,B,C),但是实际发送出去后是一封邮件,各个收件人之间相互可以看到邮箱。在保持收件人仍为邮箱A,B,C的情况下,有没有办法可以发成三封邮件,单独对邮箱A\B\C的呢?
可以通过循环的方法实现。可以把收件人的邮箱地址存储在数组中,然后每次循环发送一封邮件,把数组中的邮件地址逐一作为收件人发送邮件。
Sub SendEmail()
Dim recipients As Variant
recipients = Split("A@gmail.com,B@gmail.com,C@gmail.com", ",")
Dim i As Integer
For i = 0 To UBound(recipients)
sendMail recipients(i)
Next i
End Sub
Sub sendMail(recipient As String)
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = recipient
.Subject = "Subject"
.Body = "Email Body"
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
安装Microsoft Outlook实现
可以通过循环的方式将一个字符串分解为多个字符串,然后再每次循环中发送一封独立的邮件。
以下是一个示例代码:
Sub SendEmails()
Dim recipients As String
recipients = "A@example.com, B@example.com, C@example.com"
Dim recipientArray() As String
recipientArray = Split(recipients, ",")
Dim i As Integer
For i = 0 To UBound(recipientArray)
recipientArray(i) = Trim(recipientArray(i))
' 发送邮件的代码
...
Next i
End Sub
在上面的代码中,字符串 recipients 包含多个邮件地址,通过调用 Split 函数将该字符串分解为数组 recipientArray,然后在循环中每次处理数组中的一个元素,并使用这个元素作为收件人发送邮件。