如何用VBA宏移除或替换Word中的异常段落标记?
问题:Word中异常标题段落标记导致宏失效,求移除方案
我的Word文档里存在一些异常段落标记,导致其他宏无法正常运行。这些异常段落的特征:
- 应用了标题2(
wdStyleHeading2)或标题3(wdStyleHeading3)样式 - 可能为空(不确定)
- 可能位于表格前后(不确定)
- 被虚线包围
- 会导致标题与后续表格合并
我先尝试了以下VBA宏,仅能移除虚线,无法彻底清除异常段落标记:
Sub HeadingParaBug() Dim H As Range Set H = ActiveDocument.Range LS = Application.International(wdListSeparator) With H.Find .Text = "^p " .Replacement.Text = "^p" .Execute Replace:=wdReplaceAll .Text = " ^p" .Replacement.Text = "^p" .Execute Replace:=wdReplaceAll .Text = "^p ^p" .Replacement.Text = "^p^p" .Execute Replace:=wdReplaceAll .Text = "^13{2" & LS & "}" .Replacement.Text = "^p" .MatchWildcards = True .Execute Replace:=wdReplaceAll .Text = "" .Style = wdStyleHeading2 .MatchWildcards = False Do While .Execute If H.Text <> vbCr Then H.Collapse 0 H.Select H.InsertParagraph H.Delete End If H.Collapse 0 Loop End With Set H = ActiveDocument.Range With H.Find .Style = wdStyleHeading3 Do While .Execute If H.Text <> vbCr Then H.Collapse 0 H.Select H.InsertParagraph H.Delete End If H.Collapse 0 Loop End With End Sub
后续在MacOS环境下测试了下面的宏,完全没有效果,推测是未定位到隐藏段落:
Sub HidNempty() Dim H As Range Set H = ActiveDocument.Range With H.Find .Text = "^p " .Replacement.Text = "^p" .Execute Replace:=wdReplaceAll .Text = " ^p" .Replacement.Text = "^p" .Execute Replace:=wdReplaceAll .Text = "^p ^p" .Replacement.Text = "^p^p" .Execute Replace:=wdReplaceAll .Text = "^p" Do While .Execute If H.Font.Hidden = True Then H.Font.Hidden = False If Len(Trim(H.Paragraphs(1).Range.Text)) = 1 Then H.Delete End If End If Loop End With End Sub
希望有人能解释该现象,并提供彻底移除/替换这些异常段落标记的正确方法。测试文件第7页存在错误,另有相关视频可参考。
内容的提问来源于stack exchange,提问作者VBAbyMBA
相关产品推荐
相关产品推荐

