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

VBA批量添加邮件附件时如何在正文列出所有附件名称

VBA添加附件时同步在正文列出文件名的实现方法

你只需要在原有遍历文件的逻辑里,增加文件名拼接的步骤,最终把拼接好的文件名列表赋值给邮件正文属性即可,不需要额外依赖其他组件。

具体修改步骤

  • 遍历文件前先声明字符串变量,用来存储所有附件的文件名,同时可以预设正文的开头文案
  • 在原有添加附件的循环内,每成功添加一个附件,就把当前文件名追加到字符串变量中,搭配换行符保证排版清晰
  • 循环结束后,把拼接完成的附件列表赋值给邮件的Body属性,如果有预设的其他正文内容,直接和列表字符串拼接即可

修改后完整可运行代码

Dim folder As String
Dim attachmentList As String ' 存储附件文件名列表
folder = ThisWorkbook.Sheets("Master").Range("B1").Value
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(ActiveWorkbook.Path & "\\" & folder)
Set myAttachments = newEmail.Attachments

' 初始化正文开头和附件列表表头
attachmentList = "您好,本次邮件包含以下附件:" & vbCrLf & "------------------------" & vbCrLf

For Each oFile In oFolder.Files
    myAttachments.Add ActiveWorkbook.Path & "\\" & folder & "\\" & oFile.Name
    ' 逐行追加附件文件名
    attachmentList = attachmentList & "· " & oFile.Name & vbCrLf
Next oFile

' 将拼接好的内容写入邮件正文,可自行在前后追加其他正文内容
newEmail.Body = attachmentList & vbCrLf & "------------------------" & vbCrLf & "如有问题请及时沟通。"

补充说明

  • 如果你原本已经写了其他正文内容,不需要覆盖,直接把attachmentList插入到正文的对应位置即可,例如newEmail.Body = "这是正文开头" & vbCrLf & vbCrLf & attachmentList & "这是正文结尾"
  • 代码里的vbCrLf是VBA内置的换行常量,用来保证每个文件名单独占一行;如果使用HTML格式邮件,可将Body属性替换为HTMLBody,用HTML标签实现更丰富的排版效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:09:14