用文本周围的html粗体标签替换粗体字体

时间:2017-07-13 15:51:27

标签: html excel vba

我正在尝试创建Excel VBA代码以查找粗体文本并在找到的文本周围添加html粗体标记。

例:
查找:“此粗体字”和
替换为:“此 <b>bold</b> 字”(html标记和单词都必须为粗体)

注意:粗体文本位于非粗体文本的单元格内,只应替换粗体文本。

我还需要转换另一种方式。含义找到带有或不带粗体字体的粗体标签(<b></b>)并删除标签并确保文本为粗体。

发现this似乎已接近,但我对ActiveDocument.Tables(1).Select.Wrap = wdFindStop存在问题。

我还发现this可能有助于查找/替换文本而不会丢失粗体格式,但不完全是我需要的。对于我想要做的事情,这可能有点过头了。

我有一些工作正在进行中。

Sub removeboldaddHtml()
    lastrow = Range("A1").End(xlDown).Row
    For i = 1 To lastrow
        msg = ""
        For j = 1 To Len(Cells(i, 1))
            If Range("A" & i).Characters(j, 1).Font.Bold = True Then
                msg = msg & Mid(Cells(i, 1), j, 1)
            End If
        Next j ' next character
        If msg <> "" Then
            Cells(i, "B").Value = "<b>" & msg & "</b>"
        End If
    Next i ' next row
End Sub

2 个答案:

答案 0 :(得分:2)

以下代码相当粗糙,不优雅且耗费资源。但无论如何可能会有所帮助(对于你问题的第一部分)。只有在粗体连续的情况下它才会起作用( 这样)。数据位于表单“Sheet1”的A列中(以下代码中仅包含第1行到第3行)。 已修改以粗体显示标签之间的标签和文字。

Private Sub CommandButton1_Click()
    Dim MyStringLength  As Integer
    Dim OriginalString As String
    Dim MyRow As Long
    Dim StartPos As Integer
    Dim EndPos As Integer


        For MyRow = 1 To 3 'Adjust to your row number
            StartPos = 0
            EndPos = 0
            MyStringLenght = Len(Worksheets("Sheet1").Cells(MyRow, 1))
            For i = 1 To MyStringLenght
                If Worksheets("Sheet1").Cells(MyRow, 1).Characters(i, 1).Font.Bold = True Then
                    If StartPos = 0 Then
                        StartPos = i
                    End If
                    EndPos = i
                End If
            Next
            OriginalString = Worksheets("Sheet1").Cells(MyRow, 1)
            Worksheets("Sheet1").Cells(MyRow, 2) = StartPos
            Worksheets("Sheet1").Cells(MyRow, 3) = EndPos
            Worksheets("Sheet1").Cells(MyRow, 4) = Left(OriginalString, StartPos - 1) & "<b>" & Mid(OriginalString, StartPos, EndPos - StartPos + 1) & "</b>" & Right(OriginalString, MyStringLenght - EndPos)
            Worksheets("Sheet1").Cells(MyRow, 4).Characters(StartPos, EndPos - StartPos + 7).Font.Bold = True
        Next
End Sub

答案 1 :(得分:1)

添加标签的示例:

https://test.database-service.herokuapp.com/