在VBA中,如何在样式前后插入文本?

时间:2011-10-02 04:57:01

标签: vba ms-word

我一直在努力研究如何使用VBA在Word中的给定样式之前和之后插入文本。

目前我从上到下遍历文档,找到样式,然后进行插入。这是耗费时间和不优雅的(至少可以说)。

应该可以使用Range对象和 Selection.InsertBefore() 和 Selection.InsertAfter() 但我无法让它发挥作用。

有谁知道怎么做?

这是第二次编辑,可以更好地了解我正在寻找的东西,但需要修改它以找到特定的样式:

Sub InsertBeforeMethod()
Dim MyText As String
Dim MyRange As Object
Set MyRange = ActiveDocument.Range
MyText = "<Replace this with your text>"
' Selection Example:
Selection.InsertBefore (MyText)
' Range Example: Inserts text at the beginning
' of the active document.
MyRange.InsertBefore (MyText)
End Sub

另一种可能的方法是使用通配符和样式,但是当我使用(*)时,它只找到一个带有样式的字符,而不是整个字符串。

也许有办法让它找到整个字符串?然后可以用“mytext1”\ 1“mytext2”

进行“全部替换”

1 个答案:

答案 0 :(得分:1)

Word具有查找和替换某些样式的文本的功能,因此您甚至不需要宏。但是如果您希望使用VBA自动化它,以下示例代码会在任何Heading 2样式代码前插入 foo ,然后追加 bar

Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("Heading 2")
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = ""
    .Replacement.Text = "foo^&bar"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll