VBA发送HTML格式邮件:文本无法分三行的解决方法咨询
解决VBA邮件HTML文本换行问题
嘿,我看了你的代码,发现几个小细节出错了,导致换行没生效,咱们一步步来修正:
1. 先搞定变量的拼写与赋值错误
你定义了MyText、MyText2,但后面拼接HTML的时候用了MyText1、MyText3——这是拼写错误!而且你还把MyText重复赋值了,把原来的"Greetings"给覆盖成了第三行文本,这会导致内容本身就不对。先把变量理清楚:
MyText = "Greetings" MyText2 = "Your Macro.V.0.4 has concluded." MyText3 = "Please attend to terminal AFAP" ' 修正变量名,避免覆盖原有内容
2. 正确使用HTML换行标签
你用了<br>,这是HTML的转义实体,但在VBA里直接给HTMLBody赋值时,不需要转义,直接写<br>就行。Outlook的HTML渲染引擎能直接识别这个标签来实现换行。
3. 修正后的完整代码
这里是调整后的完整代码,修复了所有问题,能正确显示三行文本:
Private Sub mailer2() Dim oApp As Object, oMail As Object, MyHTML As String Dim username As String Dim MyText As String, MyText2 As String, MyText3 As String Application.ScreenUpdating = False Set oApp = CreateObject("Outlook.Application") Set oMail = oApp.CreateItem(0) username = InputBox("Please write your E-mail") ' 修正变量赋值与命名错误 MyText = "Greetings" MyText2 = "Your Macro.V.0.4 has concluded." MyText3 = "Please attend to terminal AFAP" ' 正确使用HTML换行标签,无需转义 MyHTML = "<p style=""font-size:18px;font-weight:Bold;color:rgb(100,100,100)"">" & _ MyText & "<br>" & MyText2 & "<br>" & MyText3 & "</p>" With oMail .To = username .Subject = "Automated message, please do not answer" .Display ' 建议先预览效果,没问题再改成.Send '.Send End With Application.ScreenUpdating = True Set oMail = Nothing Set oApp = Nothing End Sub
额外小提示
- 我把
.Send改成了.Display,建议先预览邮件确认格式正确,再切换回.Send,避免发送错误的邮件。 - 如果想要段落之间有更大的间距,可以把每一段放在单独的
<p>标签里,比如:
MyHTML = "<p style=""font-size:18px;font-weight:Bold;color:rgb(100,100,100)"">" & MyText & "</p>" & _ "<p style=""font-size:18px;font-weight:Bold;color:rgb(100,100,100)"">" & MyText2 & "</p>" & _ "<p style=""font-size:18px;font-weight:Bold;color:rgb(100,100,100)"">" & MyText3 & "</p>"
这样每一行会自动带段落间距,可读性更强。
内容的提问来源于stack exchange,提问作者DGMS89
相关产品推荐
相关产品推荐

