0

わかりました、私は検索して検索しましたが、ここの誰かが私を助けてくれることを願っています.

Word 文書を開き、特定の文字を検索し、それをアドイン フィールド (つまり { SEQ @ } ) に置き換える VBScript プログラムを取得しようとしています。

ここに私がこれまで持っているものがあります:

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 に答える