VBScript-MS-Word-Find&;替换加载项字段的字符

VBScript-MS-Word-Find&;替换加载项字段的字符,vbscript,ms-word,Vbscript,Ms Word,好吧,我找了又找,希望这里有人能帮我 我一直在尝试使用VBScript程序打开word文档,搜索特定的字符,并将其替换为Addin字段(即{SEQ@}) 到目前为止,我所掌握的情况如下: 1 Const wdReplaceAll = 2 2 Set objWord = CreateObject("Word.Application") 3 objWord.Visible = True 4 5 Set ObjDoc = objWord.Documents.O

好吧,我找了又找,希望这里有人能帮我

我一直在尝试使用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
此代码适用于“查找/替换”,但不适用于字段


多帮忙就好了!谢谢

Replace
替换文本,但要添加字段。那是完全不同的事情。我建议
查找
搜索文本(保留选中的文本),然后
添加
字段(替换选中的文本):

若要替换搜索字符串的所有匹配项,必须创建一个循环,该循环将持续执行
.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

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

好的,这是可行的,但适用于第一个。对于
objSelection.Find.Execute,,,,,,,,,wdReplaceAll
,它会将它们全部替换,替换第一个,并将其余部分作为空白删除。我不是已经解释过不能用这种方式将文本替换为字段吗?我用额外的解释和示例代码更新了我的答案。啊,是/不认为这是可能的事情/谢谢/接受/
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