我一直在努力研究如何使用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”
进行“全部替换”答案 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