1

Тема: Закрашивание текста, кроме выделенных фрагментов

Приветствую уважаемых мастеров автоматизации.

Сам я в программировании не разбираюсь совсем, даже на уровне создания макросов, поэтому прошу вас помочь.

Стоит задача автоматизировать процесс закрашивания текстовой массы за исключением нескольких выделенных фрагментов: слов, словосочетаний, фраз.

Наверняка многие видели в документальных и художественных фильмах, как выглядят опубликованные секретные документы - большая часть текста окрашена чёрным, оставлены лишь те куски, которые разрешено видеть.

Мне нужно получить что-то подобное: либо фон текста окрашивается чёрным, либо шрифт окрашивается белым, чтобы слиться с фоном страницы.

Фрагменты, которые нужно оставить нетронутыми, допустим, выделены жирным или хайлайтом - смотря что легче для автоматизации.

Самый простой вариант для меня - я выделяю нужные слова болдом, а макрос окрашивает фон остального текста в чёрный.

2

Re: Закрашивание текста, кроме выделенных фрагментов

greenserafim пишет:

Приветствую уважаемых мастеров автоматизации.

Сам я в программировании не разбираюсь совсем, даже на уровне создания макросов, поэтому прошу вас помочь.

Стоит задача автоматизировать процесс закрашивания текстовой массы за исключением нескольких выделенных фрагментов: слов, словосочетаний, фраз.

Наверняка многие видели в документальных и художественных фильмах, как выглядят опубликованные секретные документы - большая часть текста окрашена чёрным, оставлены лишь те куски, которые разрешено видеть.

Мне нужно получить что-то подобное: либо фон текста окрашивается чёрным, либо шрифт окрашивается белым, чтобы слиться с фоном страницы.

Фрагменты, которые нужно оставить нетронутыми, допустим, выделены жирным или хайлайтом - смотря что легче для автоматизации.

Самый простой вариант для меня - я выделяю нужные слова болдом, а макрос окрашивает фон остального текста в чёрный.

Вы можете это сделать простой заменой в Word - напр., заменить шрифт

3

Re: Закрашивание текста, кроме выделенных фрагментов

greenserafim пишет:

Приветствую уважаемых мастеров автоматизации.

Сам я в программировании не разбираюсь совсем, даже на уровне создания макросов, поэтому прошу вас помочь.

Стоит задача автоматизировать процесс закрашивания текстовой массы за исключением нескольких выделенных фрагментов: слов, словосочетаний, фраз.

Наверняка многие видели в документальных и художественных фильмах, как выглядят опубликованные секретные документы - большая часть текста окрашена чёрным, оставлены лишь те куски, которые разрешено видеть.

Мне нужно получить что-то подобное: либо фон текста окрашивается чёрным, либо шрифт окрашивается белым, чтобы слиться с фоном страницы.

Фрагменты, которые нужно оставить нетронутыми, допустим, выделены жирным или хайлайтом - смотря что легче для автоматизации.

Самый простой вариант для меня - я выделяю нужные слова болдом, а макрос окрашивает фон остального текста в чёрный.

Вы можете это сделать простой заменой в Word - напр., заменить шрифт "не полужирный" на выбранный цвет - напр., белый. В коде VBA это выглядит так:

Sub NotBoldToWhite()
    Selection.Find.ClearFormatting
    Selection.Find.Font.Bold = False
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Color = -603914241
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

4

Re: Закрашивание текста, кроме выделенных фрагментов

Для того, чтобы фон закрасить черным (вместо закраски шрифта белым), можно воспользоваться таким кодом:

Sub NotBoldToBlackHighlight()
Dim ffound As Boolean
ffound = True
While (ffound)
    Selection.Find.ClearFormatting
    Selection.Find.Font.Bold = False
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    If Selection.Find.found Then
        If Not (Selection.Range.HighlightColorIndex = wdBlack) Then
            Selection.Range.HighlightColorIndex = wdBlack
        Else
            ffound = False
        End If
    Else
        ffound = False
    End If
Wend
End Sub

5

Re: Закрашивание текста, кроме выделенных фрагментов

Спасибо Вам большое!