我在SO上使用了另一个答案,以便能够将HTML字符串转换为在excel中显示的富文本。
然而,它带来了一个令人讨厌的副作用,即不能在单个单元格中为多行添加数据(我发现的建议是删除粘贴逻辑)。
理想情况下,我不希望在我的解决方案中使用Internet Explorer的CreateObject,而只是让粘贴正常工作。
下面是使用字典对每个单元格执行粘贴操作的代码。
如何将HTML字符串转换为文本并将多行粘贴到单个单元格?
' Sort By Years Descending
Dim yearKey As Variant
Dim firstYear As Boolean
Dim cellData As String
firstYear = True
cellData = "<HTML><DIV>"
For Each yearKey In stakeholderEvents(stakeholder).Keys
If Not firstYear Then
cellData = cellData & "<DIV></DIV>" ' Add Extra Blank Line
End If
cellData = cellData & "<B>" & yearKey & "</B>" & "<UL>" ' Add Year
' Loop Through Events For Year
Dim eventItem As Variant
For Each eventItem In stakeholderEvents(stakeholder)(yearKey)
cellData = cellData & "<LI>" & eventItem & "</LI>"
Next
cellData = cellData & "</UL>"
firstYear = False
Next
cellData = cellData & "<DIV></BODY></HTML>"
Set clipboardData = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
clipboardData.SetText cellData
clipboardData.PutInClipboard
Sheet1.Activate
'Sheet1.Range (Sheet1.Cells(rowIndex, stakeholderEventsColumn).Address)
Sheet1.Cells(rowIndex, stakeholderEventsColumn).Select
'Sheet1.Cells(rowIndex, stakeholderEventsColumn).Select
Sheet1.PasteSpecial Format:="Unicode Text"
发布于 2018-08-03 23:52:50
我认为问题在于您正在使用HTML进行格式化,而Excel总是会粘贴HTML,以便将块级元素放入不同的单元格中。
另一种方法是使用Excel的内置格式,而不是使用HTML标记。这也会让你避免使用剪贴板对象。下面是一个将一些文本添加到某个范围,然后对其中一些文本进行不同格式设置(即加粗)的示例:
Public Sub PopulateHtmlData()
Dim cell As Excel.Range
Dim s1 As String, s2 As String
s1 = "Item 1"
s2 = "Item 2"
Set cell = Excel.Range("$A$1")
' use Chr(10) to add a new line in the cell
cell.Value = s1 & Chr(10) & s2
cell.Characters(0, Len(s1) - 1).Font.Bold = True
End Sub
https://stackoverflow.com/questions/51661384
复制相似问题