VBA Excel Outlook电子邮件正文格式

我有useform自动发送电子邮件。 我想改变电子邮件的正文 – 其中一些将基于一个文本的单元格,所以它可以是dynamic的,一些将被固定在代码中。 现在 – 在运行我需要的对象的错误,我会感谢帮助。 我希望电子邮件正文中的每一行都是分开的。

Sub sendMail(ByVal mail As String, name As String, Msht As Worksheet, CCmail As Integer, CCperson As String) Dim applOL As Outlook.Application Dim miOL As Outlook.MailItem Dim recptOL As Outlook.Recipient mailSub = Msht.Range("J2") mailbody = Msht.Range("L2") Set applOL = New Outlook.Application Set miOL = applOL.CreateItem(olMailItem) Set recptOL = miOL.Recipients.add(mail) recptOL.Type = olTo If CCmail = 1 Then Set recptOL = miOL.Recipients.add(CCperson) recptOL.Type = olCC End If tempPath = ActiveWorkbook.Path & "\" & ActiveWorkbook.name With miOL .Subject = mailSub .Body = "bla bla" & "bla bla bla" & mailbody.Font.Underline & Msht.Range("M2").Font.Bold & Body = Msht.Range("N2") .Attachments.add (tempPath) .send End With ActiveWorkbook.Close Savechanges:=True Set applOL = Nothing Set miOL = Nothing Set recptOL = Nothing End Sub 

您需要将HTML格式应用于电子邮件的正文:

 Dim body_ As String body_= "<p> Hello </p>" & _ "<p> This is a line </p>" & _ "<p> This is another line </p>" & _ "<p> This is yet another line. </p>" .BodyFormat = olFormatHTML .HTMLBody = "<html><head></head><body>" & body_ & "</body></html>" 

更新

 Option Explicit Public Sub sendMail(ByVal mail As String, name As String, Msht As Worksheet, CCmail As Integer, CCperson As String) On Error GoTo ErrorTrap Dim applOL As Outlook.Application Set applOL = New Outlook.Application Dim miOL As Outlook.MailItem Set miOL = applOL.CreateItem(olMailItem) Dim recptOL As Outlook.Recipient Set recptOL = miOL.Recipients.Add(mail) recptOL.Type = olTo Dim mailSub As String mailSub = Msht.Range("J2") Dim mailbody As String mailbody = "<p><u>" & Msht.Range("L2").Value & "</u></p>" & _ "<p><b>" & Msht.Range("M2").Value & "</b></p>" & _ "<p>" & Msht.Range("N2").Value & "</p>" If CCmail = 1 Then Set recptOL = miOL.Recipients.Add(CCperson) recptOL.Type = olCC End If Dim tempPath As String tempPath = ActiveWorkbook.Path & "\" & ActiveWorkbook.name With miOL .Subject = mailSub .BodyFormat = olFormatHTML .HTMLBody = "<html><head></head><body>" & mailbody & "</body></html>" .Attachments.Add tempPath .send End With ActiveWorkbook.Close Savechanges:=True Leave: On Error GoTo 0 Exit Sub ErrorTrap: MsgBox Err.Description, vbCritical Resume Leave End Sub