字符串在粘贴到Outlook时不会保留回车符

时间:2019-04-29 07:18:15

标签: excel vba outlook outlook-vba

为了保持回车,我很难将单个单元格粘贴到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

结果是这样的:

Result

有什么方法可以将格式保留在单元格上吗?还是使用RangeToHTML函数将其粘贴为文本而不是表格?

1 个答案:

答案 0 :(得分:3)

您正在使用HTML邮件ID,而回车在HTML代码中无效。实际上struct A { uint16_t a; } __attribute__((packed)); template<class T> struct B : A { T getA() { return static_cast<T>(a);} } __attribute__((packed)); 正在等待HTML代码而不是纯文本。

  • 使用“纯文本”邮件:

    MailItem.BodyFormat property设置为.HTMLBody(请参阅OlBodyFormat enumeration),并使用.HTMLBody代替olFormatPlain

    .Body
  • replace全部.HTMLBody以及带有HTML代码的换行符.BodyFormat = olFormatPlain .Body = wsEnv.Cells(19, 1).Value

    vbCrLf

请注意,使用 Alt + Enter 在单元格中输入的换行符是<br>而不是.HTMLBody = Replace$(wsEnv.Cells(19, 1).Value, vbCrLf, "<br>")