Excel VBA TextBox Сохранить разрыв строки - PullRequest
1 голос
/ 25 февраля 2020

Я создаю письмо, используя VBA в Excel. В качестве основной части письма я беру значение TextBox в листе Excel. Я включил несколько строк в TextBox и поместил текст в первую строку, а текст в строке ниже, но когда я генерирую электронное письмо, он берет обе строки текста и помещает их в одну строку в электронном письме.

Мне нужно знать, как сохранить разрывы строк в TextBox.

Sub Test1()

Dim OutApp As Object
Dim OutMail As Object
Dim cell As Range
Dim SigString As String
Dim Signature As String

Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")

On Error GoTo cleanup
For Each cell In Columns("B").Cells.SpecialCells(xlCellTypeConstants)
    If cell.Value Like "?*@?*.?*" And _
       LCase(Cells(cell.Row, "C").Value) = "yes" Then

        Set OutMail = OutApp.CreateItem(0)

        SigString = Environ("appdata") & _
            "\Microsoft\Signatures\Default.htm"

        If Dir(SigString) <> "" Then
            Signature = GetBoiler(SigString)
        Else
            Signature = ""
        End If

        On Error Resume Next
        With OutMail
            .Display
            .To = cell.Value
            .Subject = "Reminder"
            .HTMLBody = "<p>Dear " & Cells(cell.Row, "A").Value & ",</p>" _
                  & "<br><br>" & ActiveSheet.TextBox1.Value & _
                  .HTMLBody               
            .Attachments.Add ("")
            .Display
        End With
        On Error GoTo 0
        Set OutMail = Nothing
    End If
Next cell

cleanup:
    Set OutApp = Nothing
    Application.ScreenUpdating = True
End Sub

Function GetBoiler(ByVal sFile As String) As String
'Dick Kusleika
    Dim fso As Object
    Dim ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
    GetBoiler = ts.readall
    ts.Close
End Function

enter image description here

Вот свойства TextBox1 enter image description here

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Вы можете заменить символы новой строки, vbNewLine, на HTML форматированные разрывы строк, <br>, например:

With outMail
    .display
    .To = Cell.Value
    .subject = "Reminder"
    .HTMLBody = "<p>Dear " & Cells(Cell.row, "A").Value & ",</p>" _
          & "<br><br>" & Replace(ActiveSheet.TextBox1.Value, vbNewLine, "<br>") & _
          .HTMLBody
    .Attachments.Add ("")
    .display
End With
1 голос
/ 25 февраля 2020

Вы можете Split свою строку здесь, чтобы отделить строки


 .HTMLBody = "<p>Dear " & Cells(cell.Row, "A").Value & ",</p>" _
             & "<br><br>" _
             & Split(ActiveSheet.TextBox1.Value, ".")(0) &"."  _
             & "<br>" _
             & Split(ActiveSheet.TextBox1.Value, ".")(1) & "."  _
             & .HTMLBody               
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...