用换行符将HTMLstring粘贴到单个Excel单元格中

我试图插入一个HTML / RTF格式的文本到一个Excel单元格,保留文本格式(颜色,粗体,斜体等)。 问题是,如果文本包含换行符(<br>),中断之间的文本部分被插入到单独的单元格中(请参阅附加的截图)。 我试过使用 ,但似乎被Excel的parsing器忽略,并像一个正常的对待。 在论坛上的很多话题都说mso-data-placement:same-cell让你在单元格内有新的lince break,但在我的情况下,这种风格会被忽略。

你将能够build议如何实现文本格式和换行时粘贴文本到一个单元格? 我的代码(简化了一下)如下:

问题描述和理想的解决scheme

Private Sub Worksheet_Change2(ByVal Target As Range, ByVal sht As Worksheet) Dim objData As MSForms.DataObject Dim sHTML As String Application.EnableEvents = False Set objData = New MSForms.DataObject sHTML = "<html>ABC<br>EFG" & "<br style=" & Chr(34) & "mso-data-placement:same-cell;" & Chr(34) & " />" & "XYZ</html>" objData.SetText sHTML objData.PutInClipboard sht.PasteSpecial Format:="Unicode Text" ', NoHTMLFormatting:=False Application.EnableEvents = True End Sub 

对于<br style="mso-data-placement:same-cell;"/>工作,它需要在一个。

 Private Sub Worksheet_Change2(ByVal Target As Range, ByVal sht As Worksheet) Const br = "<br style=""mso-data-placement:same-cell;""/>" Application.EnableEvents = False Dim objData As MSForms.DataObject Set objData = New MSForms.DataObject With CreateObject("System.Text.StringBuilder") .Append_3 "<HTML>" .Append_3 "<TABLE>" .Append_3 "<TR>" .Append_3 "<TD>" .Append_3 "ABC" .Append_3 br .Append_3 "EFG" .Append_3 br .Append_3 "XYZ" .Append_3 "</TD>" .Append_3 "</TR>" .Append_3 "</TABLE>" .Append_3 "</HTML>" objData.SetText .ToString objData.PutInClipboard End With sht.Paste Application.EnableEvents = True End Sub 

注意:使用我在我的CodeReview文章使用Builder模式创buildHTML的TagBuilder类可能会有所帮助