Меню сервис — макрос — запись макроса.
Выделяете текст, применяете к нему другой цвет, другой стиль, меняете его размер. Останавливаете запись макрорекордера.
Открываете редактор VBA (alt + F11), находите там записанный вами макрос и читаете его код
например,
Visual Basic | ||
|
первые три строки меняют: цвет выделения на красный, затем стиль выделенного фрагмента на «Заголовок 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
24.6k12 gold badges94 silver badges110 bronze badges
asked Sep 11, 2010 at 13:29
Following on from stakx’s Word 97 solution, here’s what works in Word 2010:
- Open the Find and Replace dialogue (e.g. Ctrl-H)
- Click in the «Find what» box.
- Format drop-down, Font, choose the Font color to be found, OK.
- Click in the «Replace with» box.
- Format drop-down, Font, choose the colour to end up with, OK.
- Observe that the Format: description for «Find what» and «Replace with» is now different.
- Replace/Replace All/Find Next as desired.
You can determine the original colour as follows:
- Click on a bit of text with the original colour
- 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
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 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:
- Open the Search & Replace dialog.
- Tick the checkbox that says, Pattern search (or similar).
- As search term, enter
(?)
. - Select a formatting for the search (yellow text color).
- As replacement term, enter
1
. - Select the formatting for the replacement (red text color).
- 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
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
11.5k5 gold badges20 silver badges33 bronze badges
asked Oct 12, 2021 at 23:25
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 WilliamsTim Williams
150k8 gold badges96 silver badges124 bronze badges
3
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