如果语句查找/替换HTML标记的文本

时间:2015-05-09 00:20:43

标签: vba if-statement tags word-vba

我有几个大型文档,我想将其转换为干净的HTML,以便将生成的文档放入我的Kindle中。现在我知道Word有一个Save As功能来保存HTML,但即使使用过滤选项,代码也非常混乱。我找到了Greg Maxey的优秀代码,效果很好。

但是当我使用标题1 样式时会出现问题。由于标题1有粗体文本,此宏将其包含在标记中,我希望能够避免这种情况并将标题包含在 h1 标记中。我想我可以调整代码来添加 IF语句来检查粗体文本,如果它是一个标题,那么如果它是普通的粗体文本换行,则包装正确的 h1 标记强大的标签。

此外,我想用 p 标签包装段落,但我再次遇到同样的问题。

如何使代码忽略包含标题的段落?

我在下面提供了修改后的代码,并通过修改部分的评论突出显示。如果有人能看看这个并让我知道我哪里出错了,我将非常感激。

Sub ScratchMacro()
'A basic Word macro coded by Greg Maxey
Dim oRng As Word.Range
Dim oStyle As Variant
Set oStyle = ActiveDocument.Styles("Heading 1")
'Replace Bold text
Set oRng = ActiveDocument.Range
With oRng.Find
    .ClearFormatting
    .MatchWildcards = True
    .Format = True
    .Font.Bold = True
    While .Execute
        With oRng
            '===Code amended here===
            If oRng = oStyle Then
                .InsertBefore "<h1>"
                .InsertAfter "</h1>"
                .Font.Bold = False
                .Collapse wdCollapseEnd
            Else
                '===End of amended code===
                .InsertBefore "<strong>"
                .InsertAfter "</strong>"
                .Font.Bold = False
                .Collapse wdCollapseEnd
                '===Code amended here===
            End If
            '===End of amended code===
        End With
    Wend
End With
'Replace Underlined text
Set oRng = ActiveDocument.Range
With oRng.Find
    .ClearFormatting
    .MatchWildcards = True
    .Format = True
    .Font.Underline = True
    While .Execute
        With oRng
            .InsertBefore "<u>"
            .InsertAfter "</u>"
            .Font.Underline = False
            .Collapse wdCollapseEnd
        End With
    Wend
End With
'Replace Italic text
Set oRng = ActiveDocument.Range
With oRng.Find
    .ClearFormatting
    .MatchWildcards = True
    .Format = True
    .Font.Italic = True
    While .Execute
        With oRng
            .InsertBefore "<em>"
            .InsertAfter "</em>"
            .Font.Italic = False
            .Collapse wdCollapseEnd
        End With
    Wend
End With
End Sub

0 个答案:

没有答案