You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA调用Outlook发送多附件批量邮件的代码修改咨询

VBA批量发送双附件邮件修改方案

要实现单邮件添加2个附件的需求,只需要调整表格结构+补充少量代码即可,Outlook的Attachments.Add方法支持多次调用添加多个附件:

  • 首先调整Sheet3的列布局:在原有D列(第一个附件路径)右侧新增E列,用来存放第二个附件的完整本地绝对路径
  • 在原有附件添加逻辑后,新增针对E列的非空判断和附件添加代码

修改后的完整代码如下:

Sub Send_Multiple_Email()
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("Sheet3")
    Dim oa As Object
    Dim msg As Object
    
    Set oa = CreateObject("outlook.Application")
    Dim i As Integer
    Dim last_row As Integer
    
    last_row = Application.WorksheetFunction.CountA(sh.Range("A:A"))
    
    For i = 2 To last_row
        Set msg = oa.createitem(0)
    
        msg.to = sh.Range("A" & i).Value
        msg.Subject = sh.Range("B" & i).Value
        msg.body = sh.Range("c" & i).Value
    
        ' 添加第一个附件(D列)
        If sh.Range("D" & i).Value <> "" Then
            msg.attachments.Add sh.Range("D" & i).Value
        End If
        ' 新增:添加第二个附件(E列)
        If sh.Range("E" & i).Value <> "" Then
            msg.attachments.Add sh.Range("E" & i).Value
        End If
    
        ' 若不需要预览直接发送,可将msg.display替换为msg.send
        msg.display
     
     Next i
      
     MsgBox "mails sent"
     
End Sub

注意事项

  • 所有附件都需要填写完整的本地绝对路径,例如C:\Users\XXX\Desktop\合同.pdf,仅填写文件名会导致调用失败
  • 不需要添加第二个附件的收件人,对应E列留空即可,不会触发报错
  • 如果后续需要添加更多附件,只要新增对应列,仿照上述逻辑添加判断和附件添加代码即可

内容的提问来源于stack exchange,提问作者noor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 11:09:04