2013-02-26 2 views
0

좋아, 검색하고 검색하여 여기 누군가가 나를 도울 수 있기를 바랍니다. 나는 워드 문서를 열 수있는 VBScript를 프로그램을 얻을 특정 문자를 검색하고 추가 기능 필드 (예 : {SEQ의 @}) 여기VBScript MS-Word Addin 필드의 문자 찾기 및 바꾸기

로 교체하려고했는데

내가 지금까지 가지고 무엇을 :

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은 텍스트를 대체하지만 필드를 추가하려고합니다. 그것은 완전히 다른 것입니다.

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

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

당신이 계속 루프를 만들 필요가 모든 검색 문자열을 교체하려면 : 나는 검색 텍스트 필드 (선택한 텍스트를 대체) Add 다음과 (선택한 텍스트를 잎) Find에 좋을 것 더 이상 발생하지 않을 때까지 .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

+0

** 텍스트 **를 ** 필드 **로 바꿀 수 없다고 이미 설명하지 않았습니까? 추가 설명과 샘플 코드로 답변을 업데이트했습니다. –

+0

그것은 작동합니다. 감사! – CodeMonkey