Я создаю функцию для поиска текста в диапазоне документов и применяю к тексту затенение, если оно найдено.
Я запустил код следующим образом, но он найдет весь текст документа и применит заливку.
Документ типа:
Как заставить функцию работать? Спасибо!
Public Function myFun_findTxt2addShading( _
str_findTxt As String, _
range_myRange, _
str_repTxt As String, _
str_ShadingColor As String) As Boolean
Dim boolean_checkFound As Boolean
boolean_checkFound = False
range_myRange.Select
With Selection
.Find.ClearFormatting
.Find.Replacement.ClearFormatting
.Find.Text = str_findTxt
.Find.Replacement.Text = str_repTxt
.Find.Forward = True
.Find.Replacement.Font.ColorIndex = str_RepFontColor
.Find.Wrap = wdFindStop
Do While .Find.Execute
Selection.Shading.Texture = wdTextureNone
Selection.Shading.ForegroundPatternColor = wdColorAutomatic
Selection.Shading.BackgroundPatternColor = str_ShadingColor
boolean_check = True
Loop
.Find.Format = False
.Find.MatchCase = False
.Find.MatchWholeWord = False
.Find.MatchByte = False
.Find.MatchWildcards = False
.Find.MatchSoundsLike = False
.Find.MatchAllWordForms = False
End With
findTxt_Shading = boolean_checkFound
End Function
Sub test()
With Selection
.HomeKey Unit:=wdStory
.Find.Execute findText:="bookmark1", Forward:=True, Wrap:=wdFindStop
.MoveDown Unit:=wdLine
.HomeKey Unit:=wdLine
ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:="sybStart"
.Find.Execute findText:="bookmark2", Forward:=True, Wrap:=wdFindStop
.HomeKey Unit:=wdLine
ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:="sybEnd"
End With
Set sybRange = ActiveDocument.Range
sybRange.Start = sybRange.Bookmarks("sybStart").Range.End
sybRange.End = sybRange.Bookmarks("sybEnd").Range.Start
a = myFun_findTxt2addShading("pp", sybRange, "pp", wdColorYellow)
End Sub