You have two problems.
The Text property of Characters does not return the format of the text, only the plain text. To extract the format, you will have to copy the text character by character, including the formatting for that character. I have not found a way to copy the text and bring the formatting with it. For example, if you run this code, it will show each character and the font, color, and bolding for that character:
Dim i As Long
For i = 1 To Len(Worksheets("To send").Shapes("TextBox 2").TextFrame.Characters.Text)
Debug.Print Worksheets("To send").Shapes("TextBox 2").TextFrame.Characters(i, 1).Text & " " & _
Worksheets("To send").Shapes("TextBox 2").TextFrame.Characters(i, 1).Font.FontStyle & " " & _
Worksheets("To send").Shapes("TextBox 2").TextFrame.Characters(i, 1).Font.Color & " " & _
Worksheets("To send").Shapes("TextBox 2").TextFrame.Characters(i, 1).Font.Bold
Next i
So you will need a loop that adds the appropriate formatting for each character as you extract it from the text.
The second problem is that the Body attribute of email does not have any formatting; it is plain text only. Even if you put formatted text into that field, the formatting would be lost. If you want formatting you have to use HTMLBody, and use HTML code for the formatting. For a bold character you would need to format it as
<b>A</b>
Bookmarks