2015-01-08 3 views
1

특정 윈드 카드 정의 텍스트 문자열을 찾기 위해 단어 문서를 검색 한 다음 일치하는 단락을 찾으려고 매크로를 작성했습니다. 모든 것이 정상적으로 작동하지만 다음과 같은 문제가 있습니다. 인쇄 할 수없는 문자를 찾아야합니다. 특히 {XE "text to index"}와 같은 단어에 나타나는 Ms 단어 색인 참조를 찾아야합니다. 딜레마를 발견했습니다. 그 동안 Ms Word에서 대화 상자 (CNTRL + F)를 찾은 다음 와일드 카드 검색 패턴 'XE'*를 정의한 다음 ms Word가이를 찾습니다. 그러나 VBA find 함수에 대해 동일한 패턴을 전달하면 찾지 못하므로 Find 함수와 VBA에서 수동으로 호출 한 동작의 차이점을 관찰합니다.MS word VBA를 사용하여 인쇄 할 수없는 문자를 찾습니다.

VBA를 사용하여 인쇄 할 수없는 문자를 찾는 방법을 알려주세요. 그냥 정보를

이 내가, 기능


With range1.Find .Text = searchString .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True ‘some code goes here End With

+0

[본 사이트]에 체크 (HTTP ://www.gmayor.com/replace_using_wildcards.htm) –

답변

0

에게 KazJaw을 찾을 호출 매우 유익한 링크, 당신을 감사하는 방법입니다. 그러나 나는 그것이 나의 경우에는 도움이되지 않는다고 말해야 만합니다. 여전히 내가 가진 문제는 MS Word Search가 수동으로 호출되었는지 (CNTRL + F) 또는 VBA (range.find)에서 호출되었는지에 따라 다른 결과를 생성한다는 것입니다. 차이점은 수동 검색 함수가 인쇄 할 수없는 인덱스 관련 문자를 찾았지만 표시되는 VBA라는 함수가이를 수행하지 않는다는 것입니다.

프로그래밍 방식으로 인쇄 할 수없는 문자 (ActiveWindow.ActivePane.View.ShowAll = True)를 표시하는 줄을 삽입하여 특정 순간 I가 수정되었지만 해결되었습니다. 문서에서 매크로를 실행하는 것과 반대 방향으로 프로그래밍 방식으로 작업을 수행하는 것이 중요했습니다. 그러나이 경우조차도 그 행동은 매우 불안정합니다 : 똑같은 문서에서 정확히 10 번 중 1 번만 말할 수 있습니다. 그 순간 나는이 불안정성으로 인해 내가 열중하고 있다고 생각해야한다고 말하지만 동료는 그가 독립적으로 같은 문제를 우연히 발견했다.

따라서 우리는 range.find 기능을 사용하여 인쇄 할 수없는 문자를 검색한다고해서 MS Word에서 안정적인 결과가 나오지 않는다고 결론을 내 렸습니다. 우리의 경우

우리가 그들을 위해 검색의 반대로서 직접 인덱스 (필드 개체)를 검색하여 우리의 목표에 도달 인쇄 할 수없는 문자 의 패턴으로 For Each aField In range1.Fields
If aField.Type = 4 Then aField.Select pageOfFoundIndexEntry = Selection.Information(wdActiveEndPageNumber) textOfFoundIndexEntry = Mid(aField.Code, 4) ...

관련 문제