首页 > 解决方案 > 用于在每个段落的开头添加文本的宏

问题描述

我正在尝试创建一个 Word 宏,该宏将遍历我拥有的大型文档,并将文本“SAMPLE”添加到每个段落的开头。该文档包含一个标题页、目录和标题,我希望这些都没有“SAMPLE”文本,只有段落。

下面是我在各种网站上找到的一些宏代码,它们拼凑起来做一些我想做的事情。它确实将“SAMPLE”文本放在某些段落的开头,但不是全部,通常只是我文档中新部分的第一段。它还将它放在目录的末尾和标题页的开头。我对 Word 中的宏是全新的,因此感谢任何帮助,或者是否有更好的方法可以做到这一点?这段代码中甚至可能有一些不必要的位,因为它是从其他样本拼凑而成的。

Sub SAMPLE()

Application.ScreenUpdating = False
Dim Par As Paragraph, Rng As Range
For Each Par In ActiveDocument.Paragraphs

  If Par.Style = "Normal" Then
    If Rng Is Nothing Then
      Set Rng = Par.Range
    Else
      Rng.End = Par.Range.End
    End If
  Else
    Call RngFmt(Rng)
  End If

  If Par.Range.End = ActiveDocument.Range.End Then
    Call RngFmt(Rng)
  End If

Next
Application.ScreenUpdating = True
End Sub

Sub RngFmt(Rng As Range)
If Not Rng Is Nothing Then
  With Rng
    .End = .End - 1
    .InsertBefore "SAMPLE"

  End With
  Set Rng = Nothing
End If
End Sub

标签: vbams-wordparagraph

解决方案


如果您的标题、目录和标题等不使用普通样式 - 因为它们不应该 - 你真的不需要宏 - 你只需要一个通配符查找/替换,其中:

Find = [!^13]*^13
Replace = SAMPLE: ^&

并且您将 Normal Style 指定为 Find 格式参数。当然,您可以将上述内容记录为宏,但这似乎有点过分,除非您经常这样做。


推荐阅读