我有几个大型文档,我想将其转换为干净的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