VBScript MS-Word查找和;替换添加字段中的字符

时间:2013-02-26 19:31:27

标签: vbscript ms-word

好的,我搜索过并搜索过,希望有人可以帮助我。

我一直在尝试使用VBScript程序打开word文档,搜索特定的char并用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

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

很多帮助会很棒!谢谢!

1 个答案:

答案 0 :(得分: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

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