Jakiś czas temu pomagałem jednemu z forumowiczów rozwiązać problem zliczania słów, które spełniają określone kryterium formatowania. Makro miało działać dla dużego dokumentu liczącego kilkadziesiąt stron, miało być oczywiście stworzone dla Worda.
Jak to zrobić?? Jeżeli pierwszą myślą jest 'pętla dla każdego słowa' to powiem ok, taka była też pierwsza myśl pytającego. Nie mniej dla 50 stron działało to dość długo, a w dodatku nie przynosiło oczekiwanych rezultatów. Lepszym rozwiązaniem jest wykorzystać owo 'A w VBA' (o czym piszę osobno) czyli sięgnąć po mechanizm 'Szukaj'.
Poniżej gotowy kod dla bieżącego dokumentu liczący słowa pogrubione i (standardowo) podkreślone oraz nie wyróżnione kolorem. Inne opcje wyszukiwania mogą zostać zastosowane przez analogię.
Osobom początkującym zwrócę uwagę na nieskończoną pętlę
Do Loop- proszę pamiętać, że taka konstrukcja jest możliwa o ile gdzieś w kodzie, w celu uniknięcia nieskończonego zapętlenia, występuje parametr kończący działanie pętli
Exit Do.
03 | Set rngWords = ActiveDocument.Content |
05 | Dim boldUnderCount As Long |
11 | .Font.Underline = True |
16 | If rngWords.Find.Found = True Then |
19 | boldUnderCount = boldUnderCount + _ |
20 | rngWords.ComputeStatistics(wdStatisticWords) |
26 | MsgBox "Znaleziono " & boldUnderCount & " słów." |
Brak komentarzy:
Prześlij komentarz