Меню сервис — макрос — запись макроса.
Выделяете текст, применяете к нему другой цвет, другой стиль, меняете его размер. Останавливаете запись макрорекордера.
Открываете редактор VBA (alt + F11), находите там записанный вами макрос и читаете его код
например,
Visual Basic | ||
|
первые три строки меняют: цвет выделения на красный, затем стиль выделенного фрагмента на «Заголовок 2 Знак», затем меняют размерность шрифта («кегль») на 9
команда Selection.Font.Color = …. задает цвет выделенного текста.
Так, воспользовавшись макрорекордером, вы
постигнете дзен
начинаете разбираться в VBA!
Теперь дело за рутиной — там же, в редакторе VB создать форму и положить на неё все нужные кнопки, двойной щелчок по кнопке откроет редакцию её кода, здесь вам и пригодится то, что найдено рекордером!
Подскажу: чтоб при открытой форме можно было продолжать щелкать курсором по тексту, у формы должно быть установлено значение showmodal = false
Чтобы вызвать созданную в редакторе форму, ложите на лист ворда кнопку, в её коде пишете «userform1.show», где «userform1» — имя вашей формы.
кнопка выхода из формы: весь код кнопки состоит из трех букв «end»
кнопка выхода из ms word: код кнопки «Application.Quit»
Это было вкратце что да как. Пробуйте, несите сюда уточняющие вопросы.
I want to read read through a Word document, find any text that is marked in any color other then black and delete it. How to find the text color in VBA?
Deduplicator
44.3k7 gold badges65 silver badges115 bronze badges
asked Jan 23, 2011 at 19:37
Try the following code:
Sub DeleteNonBlack()
Dim Wrd As Range
For Each Wrd In ActiveDocument.Words
If Wrd.Font.Color<>wdColorBlack and wrd.Font.Color<>wdColorAutomatic Then
Wrd.Delete
end if
Next Wrd
End Sub
HTH
answered Jan 24, 2011 at 11:52
CaBieberachCaBieberach
1,7482 gold badges17 silver badges26 bronze badges
Приветствую всех читателей блога scriptcoding.ru. В этой публикации мы рассмотрим объект Font, который позволяет задать основные параметры шрифта в Word.
В прошлых статьях мы научились создавать приложение Word (смотрите «Word.Application«), новый документ (смотрите «Word.Documents») и также рассмотрели процесс добавления заданного текста в созданный документ с помощью объекта Selection (смотрите «Word.Selection«). Теперь настало время познакомиться с объектом Font, доступ к которому можно получить через одноименное свойство. Фактически, объект Font позволяет задать параметры форматирования шрифта.
Содержание
- Объект Font — основные параметры шрифта в Word
- Свойства класса Font – параметры форматирования шрифта
- Методы объекта Font – параметры форматирования шрифта в Word
Объект Font — основные параметры шрифта в Word
Сам по себе класс Font довольно прост, так как все свойства и методы интуитивно понятны. Сами свойства я разбил на несколько категорий в зависимости от их типа. И так, приступим…
Свойства класса Font – параметры форматирования шрифта
Свойства, которые доступны для чтения и для записи, принимают логические значения TRUE или FALSE. При установлении значения TRUE свойства позволяют отформатировать выделенный текст: сделать жирным, курсивом, подчеркнутым и так далее.
AllCaps– Все прописные.
SmallCaps– Малые прописные.
Bold– Жирный шрифт в Word, само свойство возвращает True, False или wdUndefined (смесь True или False)
DoubleStrikeThrough– Двойное зачеркивание.
StrikeThrough– Одинарное зачеркивание.
Emboss– Приподнятый.
Engrave– Утопленный.
Italic– Курсив.
Outline– Контур.
Shadow– С тенью.
Subscript– Подстрочный знак.
Superscript– Надстрочный знак.
Свойства, которые позволяют задать или получить значение, заданное определенной константой (если происходит выполнение кода в редакторе VBA то можно использовать не целое число, и именованное значение).
ColorIndex– Параметры цвета текста шрифта в Word, значения константы WdColorIndex:
- wdAuto — 0 — Автоматический цвет. По умолчанию, обычно черный цвет.
- wdByAuthor — -1 — Цвет определяется автором документа
- wdNoHighlight — 0 — Удаляет подсветку.
- wdBlack — 1 – черный.
- wdBlue — 2 – синий.
- wdTurquoise — 3 – бирюзовый.
- wdBrightGreen — 4 — ярко-зеленый.
- wdPink — 5 – розовый.
- wdRed — 6 – красный.
- wdYellow — 7 – желтый.
- wdWhite — 8 – белый.
- wdDarkBlue — 9 — темно-синий.
- wdTeal — 10 – бирюзовый.
- wdGreen — 11 – зеленый.
- wdViolet — 12 – фиолетовый.
- wdDarkRed — 13 — темно-красный.
- wdDarkYellow — 14 — темно-желтый.
- wdGray50 — 15 — тень 50 серого.
- wdGray25 — 16 — тень 25 серого.
Underline— Тип подчеркивания, заданный значением константы WdUnderline:
- wdUnderlineNone — 0 — нет подчеркивания.
- wdUnderlineSingle — 1 — одна линия, по умолчанию.
- wdUnderlineWords — 2 — подчеркнет только отдельные слова.
- wdUnderlineDouble — 3 — двойная линия.
- wdUnderlineDotted — 4 – точки.
- wdUnderlineThick — 6 — единая жирная линия.
- wdUnderlineDash — 7 – тире.
- wdUnderlineDotDash — 9 — чередующиеся точки и тире.
- wdUnderlineDotDotDash — 10 – чередующиеся две точки и тире.
- wdUnderlineWavy — 11 — одна волнистая линия.
- wdUnderlineDottedHeavy — 20 – жирные точки.
- wdUnderlineDashHeavy — 23 — жирные тире.
- wdUnderlineDotDashHeavy — 25 — чередующиеся жирные точки и жирные тире.
- wdUnderlineDotDotDashHeavy — 26 — чередующиеся жирные две точки и тире.
- wdUnderlineWavyHeavy — 27 — жирная волнистая линия.
- wdUnderlineDashLong — 39 — длинное тире.
- wdUnderlineWavyDouble — 43 — двойная волнистая линия.
- wdUnderlineDashLongHeavy — 55 — длинное жирное тире.
UnderlineColor— Возвращает или устанавливает 24-битный цвет подчеркивания, содержит значение константы WdColor:
- wdColorAqua — 13421619 — аква
- wdColorAutomatic — 16777216 — Автоматическая цвет. По умолчанию, обычно черный цвет.
- wdColorBlack — 0 – черный.
- wdColorBlue — 16711680 – синий.
- wdColorBlueGray — 10053222 — сине-серый.
- wdColorBrightGreen — 65280 — ярко-зеленый.
- wdColorBrown — 13209 – коричневый.
- wdColorDarkBlue — 8388608 — темно-синий.
- wdColorDarkGreen — 13056 — темно-зеленый.
- wdColorDarkRed — 128 — темно-красный.
- wdColorDarkTeal — 6697728 – темно-бирюзовый.
- wdColorDarkYellow — 32896 — темно-желтый.
- wdColorGold — 52479 – золотистый.
- wdColorGray05 — 15987699 — тень05серого.
- wdColorGray10 — 15132390 — тень10серого.
- wdColorGray125 — 14737632 — тень125серого.
- wdColorGray15 — 14277081 — тень15серого.
- wdColorGray20 — 13421772 — тень20серого.
- wdColorGray25 — 12632256 — тень25серого.
- wdColorGray30 — 11776947 — тень30серого.
- wdColorGray35 — 10921638 — тень35 серого.
- wdColorGray375 — 10526880 — тень375серого.
- wdColorGray40 — 10066329 — тень40серого.
- wdColorGray45 — 9211020 — тень45серого.
- wdColorGray50 — 8421504 — тень50серого.
- wdColorGray55 — 7566195 — тень55серого.
- wdColorGray60 — 6710886 — тень60серого.
- wdColorGray625 — 6316128 — тень625серого.
- wdColorGray65 — 5855577 — тень65серого.
- wdColorGray70 — 5000268 — тень70серого.
- wdColorGray75 — 4210752 — тень75серого.
- wdColorGray80 — 3355443 — тень80серого.
- wdColorGray85 — 2500134 — тень85серого.
- wdColorGray875 — 2105376 — тень875серого.
- wdColorGray90 — 1644825 — тень90серого.
- wdColorGray95 — 789516 — тень95серого.
- wdColorGreen — 32768 – зеленый.
- wdColorIndigo — 10040115 – синий.
- wdColorLavender — 16751052 – бледно-лиловый.
- wdColorLightBlue — 16737843 — светло-синий.
- wdColorLightGreen — 13434828 — светло-зеленый.
- wdColorLightOrange — 39423 — светло-оранжевый.
- wdColorLightTurquoise — 16777164 – светло-бирюзовый.
- wdColorLightYellow — 10092543 — светло-желтый.
- wdColorLime — 52377 – липовый.
- wdColorOliveGreen — 13107 – оливково-зеленый.
- wdColorOrange — 26367 – оранжевый.
- wdColorPaleBlue — 16764057 — бледно-голубой.
- wdColorPink — 16711935 – розовый.
- wdColorPlum — 6697881 — темно-фиолетовый.
- wdColorRed — 255 – красный.
- wdColorRose — 13408767 – розовый.
- wdColorSeaGreen — 6723891 – зеленый.
- wdColorSkyBlue — 16763904 — небесно-голубой.
- wdColorTan — 10079487 — желтовато-коричневый.
- wdColorTeal — 8421376 — бирюзовый.
- wdColorTurquoise — 16776960 — Бирюзовый цвет.
- wdColorViolet — 8388736 – фиолетовый.
- wdColorWhite — 16777215 – белый.
- wdColorYellow — 65535 – желтый.
DiacriticColor— Как ColorIndex, позволяет задать параметры цвета текста шрифта в word, принимает значения константы WdColor.
Прочие свойства, которые позволяют получить или задать такие основные параметры шрифта в Word, как размер, имя и так далее.
Position– Позволяет получить или задать смещение текста в пунктах относительно базовой линии.
Scaling— Возвращает или устанавливает процент масштаба, применяемого к шрифтом.
Spacing— Возвращает или задает расстояние в пунктах между символами. Считывание / запись
Size– Позволяет получить или установить параметры форматирования шрифта в Word: размер в пунктах.
Name— Возвращает или задает имя.
Методы объекта Font – параметры форматирования шрифта в Word
Grow() — Увеличивает размер на один пункт.
Shrink() — Уменьшает размер на один пункт.
Reset() – Полностью очищает параметры форматирования текст шрифта в Word.
Хорошо, основные свойства и методы мы рассмотрели, теперь настало время приступить к программированию, я напишу два примера под Wndows Script Host. Логика проста: происходит создание нового документа Word, далее происходит вставка текста с помощью объекта Selection, после происходит выделение различных диапазонов текста и их форматирование – основные параметры шрифта в Word.
Пример на VBScript
' ------------------------------------------------ ' Объект Word Font ' Основные параметры шрифта в Word ' Font.vbs ' ------------------------------------------------ Option Explicit dim oWord, oDoc, oSel, SelText, i, oFon, sel ' ссылка на объект Word Application Set oWord = CreateObject("Word.Application") ' ссылка на колекцию Documents Set oDoc = oWord.Documents ' создаем новый документ основные параметры шрифта в Word oDoc.Add() ' ссылка на объект Selection Set oSel = oWord.Selection ' ссылка на объект Font Set oFon = oSel.Font ' делаем документ видимым oWord.Visible = true With oSel For i = 0 To 100 ' вставляем текст .Text = "параметры форматирования шрифта в Word" ' Перемещаем курсор в конец текста .EndOf ' вставляем параграф .TypeParagraph Next End With '------------------------------------------------------------- ' Форматируем текст в документе Word '------------------------------------------------------------- With oSel .SetRange 0,50 oFon.Bold = true .SetRange 50,100 oFon.DoubleStrikeThrough = true .SetRange 100,150 oFon.Emboss = true .SetRange 150,200 oFon.Engrave=true .SetRange 200,250 oFon.Italic = true .SetRange 250,300 oFon.Outline = true .SetRange 300,350 oFon.Shadow = true .SetRange 350,400 oFon.SmallCaps = true .SetRange 400,450 oFon.Subscript = true .SetRange 450,500 oFon.Superscript = true .SetRange 500,550 oFon.StrikeThrough = true .SetRange 550,600 oFon.Hidden = true .SetRange 600,650 oFon.Name = "Times New Roman" ' основные параметры шрифта Word .SetRange 650,700 oFon.Position = 50 .SetRange 750,800 oFon.Scaling = 120 .SetRange 800,850 oFon.Size = 30 .SetRange 850,900 oFon.Spacing = 20 .SetRange 900,950 oFon.Underline = 10 oFon.UnderlineColor=8421376 End With With oFon sel = 950 ' меняем цвет для разных фрагментов for i=1 to 16 sel = 950+(i*200) oSel.SetRange sel+100, sel + 200 .ColorIndex = i sel = sel + 200 next ' делаем задержку в 3 секунды Wscript.Sleep 3000 ' выделяем весь текст oDoc(1).Select Wscript.Sleep 3000 ' очищаем параметры форматирования текста шрифта в Word .Reset ' устанавливаем верхний регистр .AllCaps = true Wscript.Sleep 3000 ' устанавливаем нижний регистр .SmallCaps = true End With
Пример на JScript
// ------------------------------------------------ // Объект Word Font // Основные параметры шрифта в Word // Font.js // ------------------------------------------------ var oWord1, oDoc1, oSel1, SelText, i, oFon1, sel1; // ссылка на объект Word Application oWord1 = WScript.CreateObject("Word.Application"); // ссылка на коллекцию Documents oDoc1 = oWord1.Documents; // создаем новый документ параметры форматирования шрифта oDoc1.Add(); // ссылка на объект Selection oSel1 = oWord1.Selection; // ссылка на объект Font oFon1 = oSel1.Font; // делаем документ видимым oWord1.Visible = true; with (oSel1){ for(i = 0; i<=100; i++){ // вставляем текст Text = "параметры форматирования шрифта в Word"; // Перемещаем курсор в конец текста EndOf(); // вставляем параграф TypeParagraph(); } } //-------------------------------------------------------- // Форматируем текст в документе Word //-------------------------------------------------------- with (oSel1){ SetRange(0,50); oFon1.Bold = true; SetRange(50,100); oFon1.DoubleStrikeThrough = true; SetRange(100,150); oFon1.Emboss = true; SetRange(150,200); oFon1.Engrave=true; SetRange(200,250); oFon1.Italic = true; // параметры форматирования шрифта SetRange(250,300); oFon1.Outline = true; SetRange(300,350); oFon1.Shadow = true; SetRange(350,400); oFon1.SmallCaps = true; SetRange(400,450); oFon1.Subscript = true; SetRange(450,500); oFon1.Superscript = true; SetRange(500,550); oFon1.StrikeThrough = true; SetRange(550,600); oFon1.Hidden = true; SetRange(600,650); oFon1.Name = "Times New Roman"; SetRange(650,700); oFon1.Position = 50; SetRange(750,800); oFon1.Scaling = 120; SetRange(800,850); oFon1.Size = 30; SetRange(850,900); oFon1.Spacing = 20; SetRange(900,950); oFon1.Underline = 10; oFon1.UnderlineColor=8421376; } with (oFon1){ sel1 = 950; // меняем цвет для разных фрагментов for(i = 0; i<=16; i++){ sel1 = 950+(i*200); oSel1.SetRange(sel1+100, sel1 + 200); ColorIndex = i; sel1 += 200; } // делаем задержку в 3 секунды WScript.Sleep(3000) // выделяем весь текст oDoc1(1).Select(); WScript.Sleep(3000); // очищаем параметры форматирования текста шрифта в Word Reset(); // устанавливаем верхний регистр AllCaps = true; WScript.Sleep(3000) // устанавливаем нижний регистр SmallCaps = true; }
Хорошо, теперь давайте разберем данные примеры. Логика работы программного кода одинакова, сразу после создания документа происходит несколько этапов:
Этап первый – в цикле for (смотрите синтаксис для языка vbscript — «Урок 6 по VBScript: Циклы for…next и for each…next» и jscript — «Урок 9 по JScript — оператор цикла for«) происходит вставка текста, с учетом параграфа и перевода строки.
Этап второй – Тут в блоке with содержится длинная череда из выделения фрагментов, для которых задаются основные параметры шрифта в Word: размер, отступы, имя и так далее.
Этап третий – Снова следует блок with, в теле которого выборочно происходит смена цвета для выделенных фрагментов. Далее с задержкой в 3 секунды (смотрите статью «Объект WScript — методы sleep, quit и echo и 8 свойств«) сбрасываются параметры форматирования шрифта и меняется регистр символов.
Автор 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 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