首页 > 解决方案 > 将字符串从 Excel 单元格粘贴到 Outlook 邮件时保留回车符

问题描述

我想将单个单元格粘贴到 Outlook 保留回车符。我不能使用RangeToHTML,因为它粘贴为表格,我需要它是纯文本,所以我试过这个:

For Each C In wsEnv.Range("A1:A17")
    If C.Row = 1 Then
        wsEnv.Cells(19, 1) = C & vbCrLf
    ElseIf C.Row < 17 Then
        wsEnv.Cells(19, 1) = wsEnv.Cells(19, 1) & C & vbCrLf
    Else
        wsEnv.Cells(19, 1) = wsEnv.Cells(19, 1) & C
    End If
Next C

On Error Resume Next

With OutMail
    .Display
    .To = Para
    .CC = CC
    .BCC = ""
    .Subject = Asunto
    .HTMLBody = wsEnv.Cells(19, 1)
    .Send
End With
On Error GoTo 0

结果是这样的:
结果

有什么方法可以保留单元格上的格式或使用该RangeToHTML功能粘贴为文本而不是表格?

标签: excelvbaemailoutlook

解决方案


您正在使用 HTML 邮件.HTMLBody,回车对 HTML 代码没有影响。实际上.HTMLBody是在等待 HTML 代码而不是纯文本。

  • 使用“纯文本”邮件:

    MailItem.BodyFormat 属性设置为olFormatPlain(请参阅OlBodyFormat enumeration)并使用.Body而不是.HTMLBody

    .BodyFormat = olFormatPlain
    .Body = wsEnv.Cells(19, 1).Value
    
  • 或用HTML 代码替换所有换行符。vbCrLf<br>

    .HTMLBody = Replace$(wsEnv.Cells(19, 1).Value, vbCrLf, "<br>")
    

请注意,您在单元格中使用Alt+输入Enter的换行符vbLf不是vbCrLf!


推荐阅读