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»

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

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's user avatar

Deduplicator

44.3k7 gold badges65 silver badges115 bronze badges

asked Jan 23, 2011 at 19:37

dps123's user avatar

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

CaBieberach's user avatar

CaBieberachCaBieberach

1,7482 gold badges17 silver badges26 bronze badges

Приветствую всех читателей блога scriptcoding.ru. В этой публикации мы рассмотрим объект Font, который позволяет задать основные параметры шрифта в Word.

В прошлых статьях мы научились создавать приложение Word (смотрите «Word.Application«), новый документ (смотрите «Word.Documents») и также рассмотрели процесс добавления заданного текста в созданный документ с помощью объекта Selection (смотрите «Word.Selection«). Теперь настало время познакомиться с объектом Font, доступ к которому можно получить через одноименное свойство. Фактически, объект Font позволяет задать параметры форматирования шрифта.

Содержание

  1. Объект Font — основные параметры шрифта в Word
  2. Свойства класса Font – параметры форматирования шрифта
  3. Методы объекта Font – параметры форматирования шрифта в Word

Объект Font — основные параметры шрифта в Word

Сам по себе класс Font довольно прост, так как все свойства и методы интуитивно понятны. Сами свойства я разбил на несколько категорий в зависимости от их типа. И так, приступим…

Свойства класса Font – параметры форматирования шрифта

параметры шрифта в Word

Свойства, которые доступны для чтения и для записи, принимают логические значения TRUE или FALSE. При установлении значения TRUE свойства позволяют отформатировать выделенный текст: сделать жирным, курсивом, подчеркнутым и так далее.

AllCaps– Все прописные.

SmallCaps– Малые прописные.

Bold– Жирный шрифт в Word, само свойство возвращает True, False или wdUndefined (смесь True или False)

DoubleStrikeThrough– Двойное зачеркивание.

StrikeThrough– Одинарное зачеркивание.

Emboss– Приподнятый.

Engrave– Утопленный.

Italic– Курсив.

Outline– Контур.

Shadow– С тенью.

Subscript– Подстрочный знак.

Superscript– Надстрочный знак.

основные параметры Word шрифта

Свойства, которые позволяют задать или получить значение, заданное определенной константой (если происходит выполнение кода в редакторе 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— Возвращает или задает имя.

настройка параметров шрифтов в word

Методы объекта 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;
}

настройка параметров форматирования Word шрифта

Хорошо, теперь давайте разберем данные примеры. Логика работы программного кода одинакова, сразу после создания документа происходит несколько этапов:

Этап первый – в цикле 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'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

Like this post? Please share to your friends:
  • Vba word цвет фона
  • Vba включить макрос excel
  • Vba в word выделенные строки таблицы
  • Vba в word 2003
  • Vba в excel функции текста