可能有很多方法可以做到这一点。就代码而言,如果将范围设置为 ActiveDocument.Range,然后使用该范围的 .Find 对象,Word 应连续返回“覆盖”找到的文本的 Range 对象。根据您对文档内容的控制程度,可以轻松标记要查找的文本的一种方法是创建字符样式并将其应用于所有这些文本。然后你可以做这样的事情:
Sub multipleFIndsUsingAStyle()
Dim rng As Range
Set rng = ActiveDocument.Range
With rng.Find
.Text = ""
' Create a style called findStyle and
' apply it to the texts you want to find
.Style = "findStyle"
.Forward = True
.Execute
While .Found
Debug.Print rng.Start, rng.End
.Execute
Wend
End With
Set rng = Nothing
End Sub
您可以使用几种完全不同的方法。一种是使用字段插入两个替代文本,如下所示(有几种方法可以做到这一点):
使用 VBA 创建名为 q1、v1、q2、v2 等的文档变量,其值为 Q.1、intro1、Q.3、home1 等。像这样
使用 ActiveDocument.Variables .Item("q1").Value = "Q.1" .Item("v1").Value = "intro1" .Item("q2").Value = "Q.3" .Item( "v2").Value = "home1" ' 我们将使用这个来切换名称 .Item("qv").Value = "q" End With
对于每个数字/变量,插入一个像这样的嵌套字段
{ DOCVARIABLE "{ DOCVARIABLE qv }{ SEQ q }" }
(所有的 {} 都需要是特殊的字段大括号字符,您可以使用 ctrl-F9 在 Windows Word 中插入它们)。
然后使用
ActiveDocument.Variables("qv").Value = "q"
ActiveDocument.Fields.Update
显示数字和
ActiveDocument.Variables("qv").Value = "v"
ActiveDocument.Fields.Update
显示名称。在这种情况下,用户将能够看到您可能不想要的域代码。