2010-04-20 3 views
1

MS Word에서 문서의 강조 표시된 텍스트를 찾아서 각각에 대해 몇 가지 작업을 수행해야하는 매크로를 작성하고 있습니다. 검색 및 조작 부분을 수행하고 코드의이 부분에 아무런 문제가없는 루프를 계획 중입니다.
하지만 얼마나 많은 반복이 필요한지 찾는 방법을 모르겠습니다. VBA의 하이라이트 수를 결정하는 방법이 있습니까?
미리 감사드립니다.MS Word 문서에서 강조 표시된 덩어리의 수를 찾는 방법은 무엇입니까?

답변

2
With ActiveDocument.Range.Find 
    .Highlight = True 
    While .Execute 
    Debug.Print .Parent.Text 
    Wend 
End With 

일치 개수를 계산할 필요가 없습니다. 루프 내에서 검색을 실행할 수 있으며 더 이상 일치가 없으면 검색이 중지됩니다.

문서의 오른쪽 부분에 검색을 적용했는지 확인하십시오. ActiveDocument.Range을 사용했지만 어떤 Range 개체도 사용할 수 있습니다. 어쩌면 좀 더 구체적인 것이 당신의 경우에 더 좋다.

또한, Find 개체의 여러 속성을 확인하고,이 (아무도 모든 옵션에 대한 기본값을 모두 기억하지 수, 플러스 Find 개체가 이미 설정되어있을 수 있습니다 기본값으로가는 것보다 더 합리적인 값으로 설정 일부 초기 검색으로).

+0

감사합니다. 그것은 놀라운 일입니다. 그러나 그것이 너무 많이 요구하지 않는다면, 그 숫자가 전혀 발견되지 않는다는 것을 암시 할 수 있습니까? 루프를 시작하기 전에 매크로는 다른 편집을 수행하며 문서가 이미 처리되었는지 여부를 확인하는 좋은 기능이므로 사용자가 매크로를 두 번 호출하면 매크로가 한 번 실행되었다는 것을 감지하고 종료됩니다. 이것은 매크로가 덩어리에서 하이라이트 마크를 제거하기 때문에 하이라이트의 번호를 찾을 수있는 경우 작동하며, 완료된 후에는 아무 것도 남지 않습니다. –

+0

@Majid : 첫 번째 패스 후에 하이라이트가 남지 않으면 두 번째 시도에서 루프가 실행되지 않습니다. 하이라이트가 없기 때문에 (즉, Execute()가 바로 False를 반환합니다). ;) 아니면 내가 원하는 것을 정확히 이해하지 못했을까요? – Tomalak

+0

예 루프 내의 코드는 두 번째 실행시 실행되지 않지만 루프가 실행되기 전에 코드가 있습니다. 그래서 문서에 중요한 부분이 있으면 확인해야합니다. 매크로가 수행하는 첫 번째 작업으로이 검사를 수행 할 것입니다. 이 숫자에 직접 액세스 할 수있는 방법이 없다면 중첩 된 두 개의 while 루프가 필요하겠습니까? –

관련 문제