Добрый вечер, уважаемые знатоки. Помогите разобраться с непростой проблемой.
В документе находится текст. Часть символов выделено желтым, часть выделено синим.
Как макросом в области выделенные желтым - вставить "14" - вместо тех символов, что находятся там сейчас? А в области выделенные синим - вставить "36" - вместо тех символов, что находятся там сейчас.
То есть во всех областях выделенных желтым - должны вставиться значения "14", заменив все те символы, что стоят там в настоящее время. То же и в областях с синим цветом, но уже с числом "36".
(Запуск макроса - через панель макросов Alt+А8) Критерий замены - это выделение цветом (желтым и синим).
Добрый вечер, уважаемые знатоки. Помогите разобраться с непростой проблемой.
В документе находится текст. Часть символов выделено желтым, часть выделено синим.
Как макросом в области выделенные желтым - вставить "14" - вместо тех символов, что находятся там сейчас? А в области выделенные синим - вставить "36" - вместо тех символов, что находятся там сейчас.
То есть во всех областях выделенных желтым - должны вставиться значения "14", заменив все те символы, что стоят там в настоящее время. То же и в областях с синим цветом, но уже с числом "36".
(Запуск макроса - через панель макросов Alt+А8) Критерий замены - это выделение цветом (желтым и синим).RipVanWinkel
Dim i As Long Dim currColor As Long Dim prevColor As Long Dim findColor As Long Dim charStart As Long Dim charEnd As Long Dim bmCount As Long Dim bmk As Bookmark
'удаление предыдущих закладок For Each bmk In ActiveDocument.Bookmarks If Left(bmk.Name, 3) = "BM_" Then bmk.Delete Next bmk
'поиск начал и концов заливок заданным цветом 'и установка закладок For i = 1 To ActiveDocument.Range.Characters.Count currColor = ActiveDocument.Range.Characters(i).HighlightColorIndex
If currColor = findColor Then If charStart = 0 Then charStart = i
ElseIf prevColor = findColor Then charEnd = i
End If
If charStart > 0 And charEnd > 0 Then 'добавляем закладку bmCount = bmCount + 1 ActiveDocument.Bookmarks.Add "BM_" & bmCount, ActiveDocument.Range(Start:=charStart - 1, End:=charEnd - 1) charStart = 0 charEnd = 0 End If
prevColor = currColor Next i
'замена символов For Each bmk In ActiveDocument.Bookmarks If Left(bmk.Name, 3) = "BM_" Then bmk.Range.Text = "14" '36 - для голубого, 14 - для желтого End If Next bmk
End Sub
[/vba]
[vba]
Код
Sub replaceHighlightText()
Dim i As Long Dim currColor As Long Dim prevColor As Long Dim findColor As Long Dim charStart As Long Dim charEnd As Long Dim bmCount As Long Dim bmk As Bookmark
'удаление предыдущих закладок For Each bmk In ActiveDocument.Bookmarks If Left(bmk.Name, 3) = "BM_" Then bmk.Delete Next bmk
'поиск начал и концов заливок заданным цветом 'и установка закладок For i = 1 To ActiveDocument.Range.Characters.Count currColor = ActiveDocument.Range.Characters(i).HighlightColorIndex
If currColor = findColor Then If charStart = 0 Then charStart = i
ElseIf prevColor = findColor Then charEnd = i
End If
If charStart > 0 And charEnd > 0 Then 'добавляем закладку bmCount = bmCount + 1 ActiveDocument.Bookmarks.Add "BM_" & bmCount, ActiveDocument.Range(Start:=charStart - 1, End:=charEnd - 1) charStart = 0 charEnd = 0 End If
prevColor = currColor Next i
'замена символов For Each bmk In ActiveDocument.Bookmarks If Left(bmk.Name, 3) = "BM_" Then bmk.Range.Text = "14" '36 - для голубого, 14 - для желтого End If Next bmk