Изменение выделенного текста на другой цвет - PullRequest
5 голосов
/ 23 октября 2008

У меня есть несколько простых файлов .doc, которые я сделал в Word 2007, где я изменил цвет текста и использовал блики для сравнения некоторых похожих текстов. То, что я хотел бы сделать, это изменить любые экземпляры зеленого текста или серого выделения на разные соответствующие цвета для каждого.

Я уверен, что есть простой способ сделать это с VBA, но любые другие ответы также приветствуются.

РЕДАКТИРОВАТЬ: Хотя я ценю ответы, один, который позволяет мне сохранять файлы .doc в качестве .docs, является предпочтительным.

Ответы [ 4 ]

3 голосов
/ 24 октября 2008

Это не с 2007 года, но идея должна подойти. В этом примере любое текущее выделение изменяется на новое выделение по умолчанию (wdBrightGreen), а любой зеленый текст - на красный.

Sub ChangeColor
Options.DefaultHighlightColorIndex = wdBrightGreen

    Selection.Find.ClearFormatting
    Selection.Find.Highlight = True
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Highlight = True
    Selection.Find.Execute Replace:=wdReplaceAll

    Selection.Find.ClearFormatting
    Selection.Find.Font.Color = wdColorBrightGreen
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Color = wdColorRed
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
1 голос
/ 15 февраля 2012

Я подумал, что можно выделить часть цветного текста, а затем выбрать вариант «выбрать текст с похожим форматированием» в меню «Выбрать текст» на вкладке «Главная». Затем просто выберите необходимый цвет текста. Надеюсь, что это работает.

1 голос
/ 23 октября 2008

Вы всегда можете сохранить файл в формате HTML и заменить цвета там. Цвет обозначен

<span style='color:red'>...

и выделение

<span style='background:yellow;mso-highlight:yellow'>...

Должно быть легко манипулировать, если ваш документ достаточно прост.

Правка, которая отвечает на редактирование в вопросе: После того, как вы закончите, заново откройте файл и сохраните файл обратно как .doc.

0 голосов
/ 27 февраля 2009

Это должно работать для вашей цели:

Sub RehiliteAll()

    Const YOUR_REQUIRED_COLOR_IDX As Integer = 6 'RED'
    Dim doc As Range
    Set doc = ActiveDocument.Range

    With doc.Find
        .ClearFormatting 'resets default search options'
        .Highlight = True
        .Wrap = wdFindStop

        While .Execute

            If doc.HighlightColorIndex = YOUR_REQUIRED_COLOR_IDX Then
                doc.Select
                MsgBox doc.HighlightColorIndex
                'Do stuff here'
            End If

            'doc has been reassigned to the matching'
            'range; we do this so word keeps searching'
            'forward'
            doc.Collapse wdCollapseEnd
        Wend
    End With

    Set doc = Nothing
End Sub

'I am closing comment quotes so that SO formatting'
'does not get messed up too much.'
...