【问题标题】:Keep carriage returns on pasting string from Excel cell to Outlook mail将字符串从 Excel 单元格粘贴到 Outlook 邮件时保留回车符
【发布时间】:2019-09-17 19:10:46
【问题描述】:

我想将单个单元格粘贴到 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 函数粘贴为文本而不是表格?

【问题讨论】:

  • 您正在使用 HTML 邮件 .HTMLBody 并且回车在 HTML 代码中无效。使用纯文本邮件或将所有vbCrLf 替换为换行符&lt;br&gt; 的HTML 代码。 • 实际上.HTMLBody 正在等待HTML 代码而不是纯文本。
  • 该死!你说的太对了,把它作为答案发布,以便我标记它。谢谢@Pᴇʜ!

标签: excel vba email outlook


【解决方案1】:

您正在使用 HTML 邮件.HTMLBody,并且回车在 HTML 代码中无效。实际上 .HTMLBody 正在等待 HTML 代码而不是纯文本。

  • 要么使用“纯文本”邮件:

    MailItem.BodyFormat property 设置为olFormatPlain(参见OlBodyFormat enumeration)并使用.Body 而不是.HTMLBody

    .BodyFormat = olFormatPlain
    .Body = wsEnv.Cells(19, 1).Value
    
  • replace all vbCrLf 以及用于换行符的 HTML 代码 &lt;br&gt;

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

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

【讨论】:

    猜你喜欢
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多