VBA宏将文档中所有标题的格式设置为粗体

时间:2019-03-06 19:36:46

标签: vba ms-word

我正在尝试自动执行Word 2013文档中标题的搜索/替换(请注意,这些不是Word样式标题,而只是用冒号大写的文本)。例如:

首席投诉人:

体检:

搜索和替换仅是将标题设置为粗体,否则必须手动完成,否则标题文本保持不变。无法知道文档中的标题(或完全没有标题),顺序或文档的第一行是否包含标题。

手动搜索/替换以下项:^ 13(*:)

为此:^ p \ 1

有效,除非第一个实例位于文件的开头(不返回)。

我一直在使用的宏是这样的:

Sub BoldHeadings()
'
' BoldHeadings Macro
'
Application.ScreenUpdating = False
With ActiveDocument.Range.Find
  .ClearFormatting
  .Replacement.ClearFormatting
  .Format = False
  .Forward = True
  .MatchWildcards = True
  .Wrap = wdFindContinue
  .Text = "^13(*:)"
  .Replacement.Text = "^p\1"
  .Replacement.Font.Bold = True
  .Execute Replace:=wdReplaceAll
  .Replacement.ClearFormatting
End With
Application.ScreenUpdating = True
End Sub

如上所述,除非第一个实例位于文件开头,否则此方法工作正常。有没有其他方法可以实现这一目标?

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试:

Sub BoldHeadings()
Application.ScreenUpdating = False
With ActiveDocument.Range
  .InsertBefore vbCr
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Replacement.Font.Bold = True
    .Text = "^13*:"
    .Replacement.Text = "^&"
    .Format = True
    .Forward = True
    .MatchWildcards = True
    .Wrap = wdFindContinue
    .Execute Replace:=wdReplaceAll
  End With
  .Paragraphs.First.Range.Delete
End With
Application.ScreenUpdating = True
End Sub