Recherche et mise en surbrillance d’un problème dans l’additif de mots

J’avais l’habitude de mettre en évidence le “mot” en utilisant ce code. Il est utilisé dans une boucle “pour chaque” qui passe en boucle dans une collection de chaînes. Mais le problème est après que tous les mots sont en surbrillance. Si nous essayons de changer un mot du document, tous les surlignages seront automatiquement supprimés.

word.Find find = rng.Find; find.Wrap = word.WdFindWrap.wdFindContinue; find.Font.UnderlineColor = word.WdColor.wdColorRed; find.HitHighlight( FindText: wd, MatchCase: true, TextColor:word.WdColor.wdColorRed, MatchWholeWord: true, HighlightColor: word.WdColor.wdColorLightYellow ); 

De par sa conception, HitHighlight ne laisse la surbrillance que jusqu’à la modification du document. Le volet de tâches Rechercher fonctionne ainsi lorsque l’utilisateur effectue une recherche non avancée.

Si vous souhaitez une mise en surbrillance permanente, vous devez procéder de manière un peu différente, en utilisant Replacement.Highlight = true , comme dans l’exemple suivant.

 Word.Document doc = wdApp.ActiveDocument; Word.Range rng = doc.Content; Word.Find f = rng.Find; object oTrue = true; object missing = Type.Missing; //Find and highlight wdApp.Options.DefaultHighlightColorIndex = Word.WdColorIndex.wdPink; f.ClearFormatting(); f.Replacement.Highlight = -1; f.Text = "the"; f.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, Word.WdFindWrap.wdFindStop, ref oTrue, ref missing, Word.WdReplace.wdReplaceAll, ref missing, ref missing, ref missing, ref missing); 

Équivalent VBA pour les lecteurs VBA intéressés:

 Sub FindXAndHighlight() Dim rng As word.Range Set rng = ActiveDocument.content Options.DefaultHighlightColorIndex = wdPink With rng.Find .Replacement.Highlight = True .Execute findText:="the", Replace:=wdReplaceAll End With End Sub