скопировать абзац из многострочного текстового окна в Outlook - PullRequest
0 голосов

У меня есть форма с многострочным текстовым полем, когда я пишу абзац и пытаюсь скопировать его в Outlook, как это выглядит в текстовом поле с пробелами между строками, но копирует весь абзац в одну строку. Вы можете увидеть это на изображениях. Я знаю, что могу написать абзац в коде HTML в .HTMLBody, но это не то, что я хочу, потому что я хочу редактировать его каждый раз, когда отправляю письмо. Я не знаю, есть ли код для этого, не могли бы вы дать мне другие идеи?

Form_Enviar_Correo

Outlook Mail

Sub ENVIAR()
Dim a As Worksheet, b As Worksheet
Dim OApp As Object, OMail As Object, sbdy As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
ChDir (ActiveWorkbook.Path)

Dest = Form_Enviar_Correo.Txt_Para.Value
Asun = Form_Enviar_Correo.Txt_Asunto.Value
CC = Form_Enviar_Correo.Txt_CC.Value

Set OApp = CreateObject("Outlook.Application")
Set OMail = OApp.CreateItem(0)

spie = "<img align=left width=80 height=90 src=https://xxxxxxxxxxxxx.png>" 

sbdy = spie

With OMail
    .To = Dest
    .CC = CC
    '.BCC = SCop
    .Subject = Asun
    .Body = Form_Enviar_Correo.Txt_Cuerpo.Text

    .HTMLBody = sbdy

    .Display
    '.Send
End With

Set OMail = Nothing
Set OApp = Nothing

Application.ScreenUpdating = True
Application.DisplayAlerts = True
'MsgBox ("El mensaje se envió con éxito"), vbInformation, "AVISO"
End Sub

1 Ответ

0 голосов
/ 27 мая 2020

Предполагая, что строки разделены символом возврата каретки vbCr, вы можете просто заменить их все эквивалентом HTML одной строкой кода, используя функцию Replace.

Dim sText as String
sTest = "This is" & vbCr & "a test"
MsgBox sTest

Dim sHTMLFormat as String
sHTMLFormat = Replace(sTest, vbCr, "<br>")
MsgBox sHTMLFormat

итак. ..

.HTMLBody = Replace(Form_Enviar_Correo.Txt_Cuerpo.Text, vbCr, "<br>")

Они также могут быть разделены vbNewLine, vbCrLf или vbLf, поэтому используйте тот, который работает в вашем случае.

...