首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >VBA -将多行HTML粘贴到单个单元格中

VBA -将多行HTML粘贴到单个单元格中
EN

Stack Overflow用户
提问于 2018-08-03 04:06:02
回答 1查看 1.3K关注 0票数 1

我在SO上使用了另一个答案,以便能够将HTML字符串转换为在excel中显示的富文本。

然而,它带来了一个令人讨厌的副作用,即不能在单个单元格中为多行添加数据(我发现的建议是删除粘贴逻辑)。

理想情况下,我不希望在我的解决方案中使用Internet Explorer的CreateObject,而只是让粘贴正常工作。

下面是使用字典对每个单元格执行粘贴操作的代码。

如何将HTML字符串转换为文本并将多行粘贴到单个单元格?

代码语言:javascript
复制
            ' 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"
EN

回答 1

Stack Overflow用户

发布于 2018-08-03 23:52:50

我认为问题在于您正在使用HTML进行格式化,而Excel总是会粘贴HTML,以便将块级元素放入不同的单元格中。

另一种方法是使用Excel的内置格式,而不是使用HTML标记。这也会让你避免使用剪贴板对象。下面是一个将一些文本添加到某个范围,然后对其中一些文本进行不同格式设置(即加粗)的示例:

代码语言:javascript
复制
    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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51661384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档