0

好的,我已经搜索和搜索,希望这里有人可以帮助我。

我一直在尝试让一个 VBScript 程序打开一个 word 文档,搜索一个特定的字符并将其替换为一个 Addin 字段(即 { SEQ @ } )

到目前为止,这是我所拥有的:

1     Const wdReplaceAll = 2
2     Set objWord = CreateObject("Word.Application")
3     objWord.Visible = True
4     
5     Set ObjDoc = objWord.Documents.Open("C:\path\to\.doc")
6     Set objSelection = objWord.Selection
7    
8     objSelection.Find.Text = "@"
9     objSelection.Find.Forward = True
10    objSelection.MatchWholeWord = True
11   
12    objSelection.Find.Replace.Text = "replacement text"
13   
14    objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll

此代码适用于“查找/替换”,但不适用于字段。

很多帮助会很棒!谢谢!

4

1 回答 1

2

Replace替换文本,但您想添加一个字段。那是完全不同的事情。我建议Find搜索文本(保留选定的文本)然后Add是字段(替换选定的文本):

With objWord.Selection
  .Find.Text = "@"
  .Find.Forward = True
  .Find.MatchWholeWord = True
  .Find.Execute

  .Fields.Add .Range, -1, "SEQ @", True
End With

要替换所有出现的搜索字符串,您必须创建一个循环,该循环一直执行.Find.Execute,直到找不到更多匹配项。该Execute方法的返回值指示是否找到另一个匹配项。

With objWord.Selection
  .Find.Text = "@"
  .Find.Forward = True
  .Find.MatchWholeWord = True

  Do
    found = .Find.Execute
    If found Then .Fields.Add .Range, -1, "SEQ @", True
  Loop While found
End With

在运行上述代码之前,请确保您的光标位于文档的开头,否则您可能会错过搜索文本的出现。

于 2013-02-26T22:40:29.140 回答