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
相关产品推荐
相关产品推荐

