【问题标题】:Mails with attachments through vba macro通过 vba 宏带附件的邮件
【发布时间】: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 封带有附件的邮件,并且有一条评论,有时会在没有睡眠时间的情况下发生错误。

标签: vba excel email


【解决方案1】:
Dim i As Long, c As Range
'....
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
    For i = 5 to 6
        Set c = cell.Offset(0, i)
        If c.Value <> "" Then .Attachments.Add c.Value
    Next i
    .Send
End With
'....

【讨论】:

  • 您在With 中使用了With,我很确定VBA 不会知道如何读取.Attachments.Add .Value
  • 效果很好!谢谢@TimWilliams,非常感谢您的投入。一个小问题 - 在遇到错误之前发送邮件 Microsoft Visual Basic 运行时错误“-214746729 (80004005)”:我们需要知道将其发送给谁。确保输入至少一个名称。
  • 想通了,与 MS Office 版本更新有关。再次感谢您的解决方案。干杯,祝你有美好的一天:)
猜你喜欢
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
  • 2011-06-08
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 2019-12-18
相关资源
最近更新 更多