如何在VBA生成的Outlook邮件正文中添加空白行?
解决Outlook VBA邮件正文换行问题
你当前代码里用了vbNewLine来换行,但Outlook的HTMLBody属性是解析HTML格式内容的,普通文本换行符不会被识别,所以所有内容挤在一行。要实现你要的分段带空白行的效果,需要用HTML的换行或段落标签,下面是两种修改方式:
方法1:使用HTML段落标签(推荐)
用<p>标签包裹每一段内容,段落之间会自动生成空白行,完全匹配你要的格式:
修改代码里的strbody定义部分:
Dim strbody As String strbody = "<p>亲爱的" & sourceWorksheet.Cells(rowIndex, "A").Value & ":</p>" & _ "<p>你的工作热情以及达成既定目标的能力,为生产力和盈利能力带来了显著提升。</p>"
方法2:使用HTML换行标签
如果不想用段落标签,可以用<br><br>来手动添加空白行(单个<br>是换行,两个就是空白行):
修改后的strbody:
Dim strbody As String strbody = "亲爱的" & sourceWorksheet.Cells(rowIndex, "A").Value & ":<br><br>" & _ "你的工作热情以及达成既定目标的能力,为生产力和盈利能力带来了显著提升。"
完整修改后的代码
Sub CreateEmails() Dim sourceWorksheet As Worksheet Set sourceWorksheet = Worksheets("Sheet1") Dim lastRow As Long With sourceWorksheet lastRow = .Cells(.Rows.Count, "C").End(xlUp).Row End With Dim OutlookApp As Object Set OutlookApp = CreateObject("Outlook.Application") Dim rowIndex As Long For rowIndex = 2 To lastRow '从第二行开始 Dim MItem As Object Set MItem = OutlookApp.CreateItem(0) Dim strbody As String '这里用方法1的段落标签写法,也可以替换成方法2的内容 strbody = "<p>亲爱的" & sourceWorksheet.Cells(rowIndex, "A").Value & ":</p>" & _ "<p>你的工作热情以及达成既定目标的能力,为生产力和盈利能力带来了显著提升。</p>" With MItem .To = sourceWorksheet.Cells(rowIndex, "E").Value .CC = sourceWorksheet.Cells(rowIndex, "F").Value '会将C列的每个邮箱地址生成单独邮件 .Subject = "MIP评级 - 2022年9月" .HTMLBody = strbody .display End With Next rowIndex End Sub
内容的提问来源于stack exchange,提问作者khyati dedhia
相关产品推荐
相关产品推荐

