Vba word изменить цвет текста

Меню сервис — макрос — запись макроса.
Выделяете текст, применяете к нему другой цвет, другой стиль, меняете его размер. Останавливаете запись макрорекордера.
Открываете редактор VBA (alt + F11), находите там записанный вами макрос и читаете его код
например,

Visual Basic
1
2
3
4
5
6
    Selection.Range.HighlightColorIndex = wdRed
    Selection.Style = ActiveDocument.Styles("Заголовок 2 Знак")
    Selection.Font.Size = 9
    Selection.Font.Color = wdColorPlum
    Selection.Font.Color = wdColorGreen
    Selection.Font.Color = wdColorGray80

первые три строки меняют: цвет выделения на красный, затем стиль выделенного фрагмента на «Заголовок 2 Знак», затем меняют размерность шрифта («кегль») на 9
команда Selection.Font.Color = …. задает цвет выделенного текста.
Так, воспользовавшись макрорекордером, вы

постигнете дзен

начинаете разбираться в VBA!
Теперь дело за рутиной — там же, в редакторе VB создать форму и положить на неё все нужные кнопки, двойной щелчок по кнопке откроет редакцию её кода, здесь вам и пригодится то, что найдено рекордером!
Подскажу: чтоб при открытой форме можно было продолжать щелкать курсором по тексту, у формы должно быть установлено значение showmodal = false
Чтобы вызвать созданную в редакторе форму, ложите на лист ворда кнопку, в её коде пишете «userform1.show», где «userform1» — имя вашей формы.
кнопка выхода из формы: весь код кнопки состоит из трех букв «end»
кнопка выхода из ms word: код кнопки «Application.Quit»

Это было вкратце что да как. Пробуйте, несите сюда уточняющие вопросы.

Автор Anton, 07 февраля 2017, 16:22

Попытался записать макрорекордером процедуру, которая изменяет цвет всего текста (не выделения, а именно текста) на синий (ну или любой другой). Но макрос оказался пустой, ничего не записывается. Помогите с этой проблемой пожалуйста.
Причем нужно поменять цвет текста в основной части документа и во всех сносках.



Администратор

  • Administrator
  • Сообщения: 2,252
  • Записан

Макрос делает красный цвет шрифта.
Sub Макрос1()
    ‘1. Цвет текста во всём файле.
    ActiveDocument.Range.Font.TextColor.RGB = 255
    ‘2. Цвет текста в обычных сносках (не концевых).
    ActiveDocument.StoryRanges(wdFootnotesStory).Font.TextColor.RGB = 255
End Sub

Ещё логичнее изменять цвет шрифта у стилей, чтобы новый печатаемый текст имел нужный цвет, а также чтобы становился нужный цвет у текста, вставляемого из буфера обмена.
Это можно сделать вручную или с помощью макроса:
Sub Макрос2()
    ‘ Настройка цвета шрифта у стилей.
    ActiveDocument.Styles(«Обычный»).Font.TextColor.RGB = 255
    ActiveDocument.Styles(«Знак сноски»).Font.TextColor.RGB = 255
    ActiveDocument.Styles(«Текст сноски»).Font.TextColor.RGB = 255
End Sub


Большое спасибо!
А подскажите пожалуйста еще, где найти цифры для всей палитры цветов для цвета текста.



Администратор

  • Administrator
  • Сообщения: 2,252
  • Записан

В ворде, в файле примените к тексту нужный цвет, выделите текст с нужным цветом.
Затем перейдите в VBA — View — Immediate Window — используйте этот код:
print Selection.Range.Font.TextColor.RGB
и подставьте полученное число в макрос.

Также у объекта «TextColor» есть инструмент для работы с цветами темы (вкладка «Главная» — группа «Шрифт» — стрелка кнопки «Цвет шрифта» — Цвета темы):
Selection.Range.Font.TextColor.ObjectThemeColor

Если после «ObjectThemeColor» поставить знак равно, то можно выбрать нужный цвет темы.
В ворде темы выбираются здесь: вкладка «Дизайн» — группа «Форматирование документа». Здесь в трёх местах: Темы, галерея тем (это эскизы тем), Цвета.


Большое спасибо за подробный ответ!


У меня в 2007 офисе ошибка в этой строке, а в офисе 2010 нет ошибки. Почему так, подскажите пожалуйста!
Selection.Range.Font.TextColor.RGB

Если это особенность офиса 2007, то тогда как в нем изменить цвет у всего документа?



Администратор

  • Administrator
  • Сообщения: 2,252
  • Записан

В каждой версии ворда есть особенности. В этом случае, в «Word 2010» свойство «Color» скрыто, но осталось работать. Вместо него, наверное, появилось свойство «TextColor».

Вот такие макросы работают во всех версиях ворда:

Sub Макрос1()
    ‘1. Цвет текста во всём файле.
    ActiveDocument.Range.Font.Color = 255
    ‘2. Цвет текста в обычных сносках (не концевых).
    ActiveDocument.StoryRanges(wdFootnotesStory).Font.Color = 255
End Sub

Sub Макрос2()
    ‘ Настройка цвета шрифта у стилей.
    ActiveDocument.Styles(«Обычный»).Font.Color = 255
    ActiveDocument.Styles(«Знак сноски»).Font.Color = 255
    ActiveDocument.Styles(«Текст сноски»).Font.Color = 255
End Sub



  • Форум по VBA, Excel и Word

  • Word

  • Макросы в Word

  • Word VBA Макросы: Поменять цвет текста.

I need a vba macro that searches for all text that has font color as yellow within a MS Word 2007 document and changes it to red. The yellow color won’t show in the printouts. Manually selecting and changing will take me hours.

Adi Lester's user avatar

Adi Lester

24.6k12 gold badges94 silver badges110 bronze badges

asked Sep 11, 2010 at 13:29

Raaskull's user avatar

Following on from stakx’s Word 97 solution, here’s what works in Word 2010:

  1. Open the Find and Replace dialogue (e.g. Ctrl-H)
  2. Click in the «Find what» box.
  3. Format drop-down, Font, choose the Font color to be found, OK.
  4. Click in the «Replace with» box.
  5. Format drop-down, Font, choose the colour to end up with, OK.
  6. Observe that the Format: description for «Find what» and «Replace with» is now different.
  7. Replace/Replace All/Find Next as desired.

You can determine the original colour as follows:

  1. Click on a bit of text with the original colour
  2. Open the colour palette. If neither a «Theme color» nor a «Standard color» is selected, you may need to click on «More colors».

answered Jul 5, 2013 at 14:22

Colin Frame's user avatar

Sub ChangeColorWithReplace()   
    Selection.Find.ClearFormatting
    Selection.Find.Font.Color = wdColorYellow
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Color = wdColorRed
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchByte = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Also, here’s another way to do it. It’s not extremely fast, but it’s faster than doing it manually:

Sub ChangeFontColorByCharacter()
    Application.ScreenUpdating = False
    Dim d As Document: Set d = ActiveDocument
    For i = 1 To d.Characters.Count
        If d.Characters(i).Font.TextColor.RGB = RGB(255, 255, 0) Then
            d.Characters(i).Font.TextColor.RGB = RGB(255, 0, 0)
            DoEvents
        End If
    Next
    Application.ScreenUpdating = True
End Sub

answered Sep 11, 2010 at 15:36

Todd Main's user avatar

Todd MainTodd Main

28.9k11 gold badges82 silver badges146 bronze badges

1

There’s actually a non-programming solution for this. I’ve tried it in Word 97, so I’d assume Word 2007 would still allows this:

  1. Open the Search & Replace dialog.
  2. Tick the checkbox that says, Pattern search (or similar).
  3. As search term, enter (?).
  4. Select a formatting for the search (yellow text color).
  5. As replacement term, enter 1.
  6. Select the formatting for the replacement (red text color).
  7. Then search and replace everything.

Steps 2, 3 and 5 (entering search and replace regular expressions) may not actually be necessary.

If you definitely need VBA code, you should be able to record the above steps as a macro and then look at the generated code.

answered Sep 11, 2010 at 15:45

stakx - no longer contributing's user avatar

1

I have seen multiple articles about this topic but none of them helped in my case and most of them were for Excel. I want to change the font color using vba code in word. I have tried Selection.Font.Color but it didn’t work either. I know that vba needs a variable which have that particular word but I’m failing on doing this.

Does anyone know how to do this?

I used a workaround to replace the font color of a word using this vba code


With Selection.Find
        .ClearFormatting
        .Text = "hello"
        .Replacement.ClearFormatting
        .Replacement.Text = "hi"
        .Replacement.Font.Color = wdColorBlack 'I added this line
        .Execute Replace:=wdReplaceAll, Forward:=True, _
         Wrap:=wdFindContinue
    End With

But I was looking to more a specific way to replace the font color of a word in vba.

braX's user avatar

braX

11.5k5 gold badges20 silver badges33 bronze badges

asked Oct 12, 2021 at 23:25

thecow milk's user avatar

11

If you want a re-usable piece of code then something like this should be close:

Sub Tester()
    
    ActiveDocument.Content.Font.Color = vbBlack
    
    ColorText ActiveDocument.Content, "breaks", vbRed
    ColorText ActiveDocument.Content, "it", vbBlue
    ColorText ActiveDocument.Content, "with just", vbGreen

End Sub


Sub ColorText(rng As Range, strFind As String, clr As Long)
    With rng.Find
        .Text = strFind
        .Forward = True
        .Format = False
        .MatchCase = False
        .MatchWholeWord = True
        Do While .Execute()
            rng.Font.Color = clr 'rng is redefined as the found text
        Loop
    End With
End Sub

answered Oct 13, 2021 at 0:28

Tim Williams's user avatar

Tim WilliamsTim Williams

150k8 gold badges96 silver badges124 bronze badges

3

How to Highlight Text in Word Document using VBA?

Highlight

In a document use the highlighter to highlight particular text or range to make good resemblance.

With the help of little code we can achieve this task. In given example we will be using “Selection” object, developer can change this object to anything which refers to a range like grab an object by Find and take the range and perform highlight operation;

The following is the document on which we will perform highlight operation:

Code example

Sub HighlightText()
    Dim rng As Range
    Set rng = Selection.Range
    rng.HighlightColorIndex = wdBlue
End Sub

wdBlue is a constraint which can be replaced with desired color constraint provided by Micorosoft. Post execution of above code the result would look like as follow:

Next >> Word Story Ranges with code example

Like this post? Please share to your friends:
  • Vba word знак абзаца
  • Vba word защита документа
  • Vba word заполнение таблиц
  • Vba word заменить картинку
  • Vba word заменить все слова