Строка не будет сохранять возврат каретки при вставке в Outlook - PullRequest
2 голосов
/ 29 апреля 2019

Я с трудом пытаюсь вставить в 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 Ответ

3 голосов
/ 29 апреля 2019

Вы используете почту HTML .HTMLBody, и возврат каретки не влияет на код HTML.На самом деле .HTMLBody ожидает HTML-код, а не простой текст.

  • Либо используйте «только текстовое» письмо:

    Установите свойство MailItem.BodyFormat до olFormatPlain (см. Перечисление OlBodyFormat ) и используйте .Body вместо .HTMLBody

    .BodyFormat = olFormatPlain
    .Body = wsEnv.Cells(19, 1).Value
    
  • или вместо все vbCrLf с кодом HTML для перевода строки <br>.

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

Обратите внимание, что разрывы строк, вводимые в ячейках с помощью Alt + Ввод , vbLf не vbCrLf!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...