Excel到Outlook群发邮件/忽略空白和缺少附件怎么解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (113)

从我的第一个VBA项目开始,没有太多的经验和努力解决这个问题。我有一个Excel格式的电子邮件,收件人,CC,主题等,我有每个附件的文件路径。这些是陈述。一些.PDF和一些.XLSX取决于请求。尽管我有每个文件路径,但有些文件路径有多个EL列,但并不是所有的行都会有一个文件,并不总是在路径末尾的语句。我需要VBA代码来忽略空白和丢失的文件,只能附加发现。这可以是多达9个文件,或者只有一个,或者没有一个线路发送给发件人。我怎样才能做到这一点?

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:A196")

    Set objMail = objOutlook.CreateItem(0)

        With objMail
            .To = cell.Value
          .CC = cell.Offset(0, 1).Value
            .Subject = cell.Offset(0, 2).Value
            .Body = cell.Offset(0, 3).Value
            .Attachments.Add 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
            .Attachments.Add cell.Offset(0, 8).Value
            .Display
        End With

        Set objMail = Nothing
    Next cell

    Set ws = Nothing
    Set objOutlook = Nothing

End Sub
提问于
用户回答回答于

这将忽略你的范围内的空白单元格,假定你要忽略的值在范围A2 - A196中。

在这里,忽略真正的意思是跳到“Else”,你的循环将重新开始。IF语句告诉它在空白时什么也不做,这一点被忽略了。下一行是“Next Cell”,它会给你想要的结果。

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:A196")
If cell.value <> "" Then  'If NOT blank, do this (your code)
Set objMail = objOutlook.CreateItem(0)

    With objMail
        .To = cell.Value
      .CC = cell.Offset(0, 1).Value
        .Subject = cell.Offset(0, 2).Value
        .Body = cell.Offset(0, 3).Value
        .Attachments.Add 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
        .Attachments.Add cell.Offset(0, 8).Value
        .Display
    End With

    Set objMail = Nothing
Else 'If IS blank, do this (next cell)
Next cell

Set ws = Nothing
Set objOutlook = Nothing

扫码关注云+社区

领取腾讯云代金券