如何用Excel VBA将指定列区域内容转为纯文本写入Outlook邮件正文
Excel VBA 将指定列区域内容以纯文本写入Outlook邮件正文
以下是直接可用的代码示例,核心是把Excel区域内容转换成带排版的纯文本字符串,再写入Outlook邮件正文:
Sub ExportRangeToOutlookPlainText() Dim olApp As Object Dim olMail As Object Dim targetRange As Range Dim rowCount As Integer, colCount As Integer Dim textBody As String Dim i As Integer, j As Integer ' 指定要导出的Excel区域(示例:Sheet1的A2到C10) Set targetRange = ThisWorkbook.Sheets("Sheet1").Range("A2:C10") ' 初始化Outlook对象(后期绑定,无需手动添加引用) Set olApp = CreateObject("Outlook.Application") Set olMail = olApp.CreateItem(0) ' 0代表创建普通邮件 ' 遍历区域,拼接纯文本内容 rowCount = targetRange.Rows.Count colCount = targetRange.Columns.Count For i = 1 To rowCount For j = 1 To colCount ' 用制表符分隔列内容,空单元格显示为空字符串 textBody = textBody & targetRange.Cells(i, j).Value & vbTab Next j ' 每行结束后换行,去掉最后一个多余的制表符 textBody = Left(textBody, Len(textBody) - 1) & vbCrLf Next i ' 设置邮件基本信息 With olMail .To = "收件人邮箱@xxx.com" ' 替换为实际收件人 .Subject = "Excel导出的纯文本内容" ' 替换为实际主题 .BodyFormat = 1 ' olFormatPlain,强制设置为纯文本格式 .Body = textBody ' 写入纯文本正文 .Display ' 显示邮件,如需直接发送改为.Send End With ' 释放对象 Set olMail = Nothing Set olApp = Nothing End Sub
关键说明
- 区域内容拼接:通过双层循环遍历单元格,用
vbTab(制表符)分隔列、vbCrLf(换行符)分隔行,保证纯文本排版清晰。 - 纯文本格式强制设置:必须添加
.BodyFormat = 1,避免Outlook自动将文本转为HTML格式导致排版错乱。 - 后期绑定优势:用
CreateObject创建Outlook对象,无需手动在VBA编辑器中添加Outlook类库引用,兼容性更强。 - 自定义调整:如果需要替换列分隔符(比如用逗号代替制表符),直接把
vbTab替换为", "即可;若要去掉末尾多余的换行,可在循环结束后执行textBody = Left(textBody, Len(textBody) - 2)。
内容的提问来源于stack exchange,提问作者g00re
相关产品推荐
相关产品推荐

