我正在尝试创建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
答案 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/