【发布时间】:2017-01-10 15:43:38
【问题描述】:
我正在运行一个宏,用于通过 Outlook 向多个收件人发送邮件,并通过 vba excel 发送一个或多个附件。我不精通宏,因此从各种来源获取了一些输入并得出了以下最终代码。
但是我已经提到了最大值。限制 3 个文件附件,这对于所有收件人都是恒定的,但每当我必须相应地仅附加 1 个或 2 个文件时,必须通过评论来禁用,例如在下面的代码中,我禁用了用于附加 1 个文件的第 2 和第 3 个附件列。 有没有什么方法可以让宏根据输入的值自动获取输入并留空,例如,如果一个收件人有 1 个附件,而下一个收件人有 2 个或 3 个附件
Sub SendMail()
Dim objOutlook As Object
Dim objMail As Object
Dim ws As Worksheet
Set objOutlook = CreateObject("Outlook.Application")
Set ws = ActiveSheet
For Each cell In ws.Range("A2:A1000")
Set objMail = objOutlook.CreateItem(0)
With objMail
.To = cell.Value
.Cc = cell.Offset(0, 1).Value
.Bcc = cell.Offset(0, 2).Value
.Subject = cell.Offset(0, 3).Value
.Body = cell.Offset(0, 4).Value
.Attachments.Add cell.Offset(0, 5).Value
'.Attachments.Add cell.Offset(0, 6).Value
'.Attachments.Add cell.Offset(0, 7).Value
.Send
End With
Set objMail = Nothing
Next cell
Set ws = Nothing
Set objOutlook = Nothing
End Sub
【问题讨论】:
-
您可能希望在发送邮件后添加一些等待时间,一两秒。有时,Outlook 发送这么多邮件太快了。
-
@EganWolf - 关于发送时间,我没有遇到任何问题。只需 2 秒即可邮寄 40 个收件人。让我知道是否需要添加一些内容?
-
实际上,我从未测试过。我正在使用和更新由其他人编写的宏,该宏正在发送大约 30 封带有附件的邮件,并且有一条评论,有时会在没有睡眠时间的情况下发生错误。