2013-02-26 29 views
0

好吧,我搜索和搜索,希望有人在這裏可以幫助我。VBScript MS-Word查找和替換地址字段

我一直在試圖讓一個VBScript程序打開一個word文檔,搜索特定的字符和一個加載項字段(即{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 

此代碼適用於「查找/替換」,但不適用於字段。

很多幫助將會很棒!謝謝!

回答

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 

確保在運行上述代碼之前將光標定位在文檔的開頭,否則可能會錯過搜索文本的發生。

+0

好的,這有效,但適用於第一個。並且使用'objSelection.Find.Execute ,,,,,,,,,, wdReplaceAll' 它將它們全部替換爲第一個,並將其餘部分替換爲空白。 – CodeMonkey 2013-02-27 15:55:19

+0

我不是已經解釋過,您不能用**這種方式替換**文本**嗎?我用更多的解釋和示例代碼更新了我的答案。 – 2013-02-27 19:07:14

+0

它的工作原理。謝謝! – CodeMonkey 2013-03-06 21:07:08