Цвет в макросах 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,255
  • Записан

Макрос делает красный цвет шрифта.
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,255
  • Записан

В ворде, в файле примените к тексту нужный цвет, выделите текст с нужным цветом.
Затем перейдите в 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,255
  • Записан

В каждой версии ворда есть особенности. В этом случае, в «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 Макросы: Поменять цвет текста.

АрхивОфис

К сожалению, в редакторе отсутствует возможность использовать две кнопки выбора цвета шрифта. Простейший макрос, который создается буквально за пару секунд, решает эту проблему.

Текстовый редактор Word позволяет раскрасить текст документа шрифтами разного цвета. Как правило, это делается для того, чтобы обратить внимание читателей на фрагменты текста или отдельные слова в документе

Стандартно в редакторе задан черный цвет шрифта, но эти установки можно изменить на свои собственные. Для этого в меню «Формат» выберите команду «Шрифт» или нажмите сочетание клавиш «CTRL+D». Откроется вот такое диалоговое окно:

В поле «Цвет текста» уже установлен параметр «Авто». Вы можете выбрать иной цвет, кликнув мышкой на любой значок цвета из открывающегося списка. Если вы хотите установить выбранный вами цвет для всех документов, которые вы будете создавать в дальнейшем, вы можете нажать кнопку «По умолчанию». В этом случае сделанные вами настройки шрифта сохранятся в шаблоне Normal.dot. Именно на основе данного шаблона создаются все документы в редакторе Word (стандартный режим).

Как только вы нажмете кнопку ОК для подтверждения изменения цвета шрифта, весь новый текст, который вы введете, будет отображен уже этим новым цветом. Если вы захотите вернуть черный цвет шрифта, вы можете либо вновь изменить настройки в диалоговом окне «Шрифт» либо, что гораздо быстрее, нажать сочетание клавиш «CTRL+Пробел».

Чтобы ускорить выбор цвета шрифта, на панели инструментов «Форматирование» находится соответствующая кнопка:

Ее действие аналогично действию выбора цвета шрифта с помощью диалогового окна. Кроме того, вы можете визуально наблюдать на кнопке выбранный вами в данный момент цвет, а при наведении на эту кнопку курсора мыши появится всплывающая подсказка с указанием цвета.

К сожалению, в редакторе отсутствует возможность использовать две кнопки выбора цвета шрифта и использовать каждую для своего цвета. Например, если в документе нужно один текст напечатать синим цветом, а другой — зеленым, то используя лишь одну стандартную кнопку выбора цвета шрифта, придется все время переключаться с одного цвета на другой. К тому же велика вероятность спутать похожие цвета. А если вывести на панель инструментов дубликат кнопки, то выбор цвета в одной кнопке автоматически приводит к установлению такого же цвета в другой кнопке. Замкнутый круг?

Нет, если создать простейший макрос и вывести его кнопку на панель инструментов. Итак, начнем.

1. Создайте пустой документ в Word.

2. Зайдите в меню «Сервис» (Tools), выберите команду «Макрос» (Macro) и из открывшегося списка выберите команду «Начать запись» (Record New Macro). Появится диалоговое окно, в котором следует назначить макросу имя (пусть будет FontColor) и щелкнуть на кнопке с изображением молотка. Если вы не хотите выводить кнопку макроса на панель инструментов, а желаете пользоваться сочетаниями клавиш, то можете кликнуть на кнопке с изображением клавиатуры:

3. Откроется новое диалоговое окно, в котором вам следует перейти на вкладку «Команды» и из правого поля перетащить на панель инструментов ваш новый макрос с названием Normal.NewMacros.FontColor. Кстати, позже или прямо сейчас вы можете изменить стиль кнопки, убрав текст и назначив для кнопки какое-нибудь подходящее изображение.

4. После этого на рабочем окне документа появится панелька с управляющими кнопками для записи макроса, как на скриншоте ниже:

5. Теперь будьте аккуратны, так как макрос уже пишется. Повторите действия по выбору цвета шрифта из диалогового окна «Шрифт», которые были описаны выше, или же выберите кнопкой «Цвет текста» на панели инструментов нужный вам цвет (в данном случае — синий).

6. Нажмите на кнопку с квадратиком в управляющей панели, чтобы остановить запись.

Всё. Можете закрыть этот документ без сохранения.

Теперь для того, чтобы вводимый текст отображался синим цветом, достаточно нажать кнопку созданного вами макроса. Для установления другого цвета шрифта, выберите нужный с помощью стандартной кнопки выбора цвета.

Для тех читателей, которые знают как работать со встроенным в Microsoft Word редактором Visual Basic, я просто приведу единственную строчку из кода макроса:

Selection.Font.Color = wdColorBlue

Аналогично можно поступить и в случае, если вам нужно выделять текст (не шрифт!) разными цветами, как это обычно делается фломастером.

I have been searching off and on, high and low, for many months, to no avail, for VBA code that I can include in my macros to highlight text using the current default highlight color. I have looked through my personal resource books and all up and down the land of Google, including here.

I have a bazillion macros created that highlight text every which way to Sunday, in every possible (basic) color, and they all work great. But sometimes I have a scenario where I want to highlight random text in an ongoing manner, multiple times, in a particular color. Then I’ll want to switch colors … for a while. And switch again … for a while.

I have keyboard shortcuts (many) for a lot of highlighting options, including the built-in command shortcut to highlight text that I have selected manually. So, for example, I can manually select three words to my left, and use Ctrl+Alt+H to invoke the built-in Highlight command, and it will use the current default color.

But I’m unable to automate that further with a macro. For example, I have used numerous different iterations of macros to highlight text as I’m typing it, or to automatically highlight X number of words to my left, or a line or sentence or paragraph. But with each of those macros, I’m forced to declare a specific color. That means that I then have to have voluminous series of macros to be able to do the same thing with each (basic) color variation. That’s fine if I just want to infrequently highlight text in a specific color. But when I know I will be using a specific color for the next, say, 20 or 40 highlights, I’d love to set a default color and then just use a generic highlight command rather than a color-centric command (which is more steps).

Всех Приветствую. В общем, нужно сделать макрос в Microsoft Word. Пользователь ставит курсор в любую часть текста, и абзац, в котором находится курсор выделяется и окрашивается в красный цвет.
Знаю, что с помощью Selection.Font.TextColor = 200 можно окрасить текст в красный, поэтому решил сначала найти начало абзаца:

With Selection.Find
 .Forward = False
 .ClearFormatting
 .MatchWholeWord = True
 .MatchCase = False
 .Wrap = wdFindContinue
 .Execute FindText:="^p"
End With 

А потом идти по тексту, пока не найду конец абзаца.
И вот в этом и заключается проблема — я просто не знаю, как идти по тексту, чтобы выделять каждое попадающееся мне слово.

задан 14 апр 2022 в 14:06

markls's user avatar

Нашёл похожее решение в интернете, чуть исправил, чтобы делало то, что мне требуется:

Dim i&, iPos&
    iPos = Selection.Paragraphs(1).Range.Start
    With ActiveDocument
        Do
            i = i + 1
        Loop While .Paragraphs(i).Range.Start - iPos
    End With
    ActiveDocument.Paragraphs(i).Range.Select
Selection.Font.TextColor = wdColorBlue

ответ дан 13 мая 2022 в 9:21

markls's user avatar

marklsmarkls

508 бронзовых знаков

Sub ColoredDigits()
'
' ColoredDigits Макрос
' Макрос записан 21.07.2011 VirtualLab
'
    Dim i As Long
    Selection.WholeStory
    Application.Browser.Previous
    Debug.Print Selection.StoryLength
    For i = 1 To Selection.StoryLength
        Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        'If (Asc(Selection.Characters.First) >= 48) And (Asc(Selection.Characters.First) <= 57) Then
        If IsNumeric(Selection.Characters.First) Then
            Debug.Print "Символ: "; Selection.Characters.First
            Debug.Print "ASCI code: "; Asc(Selection.Characters.First)
            Selection.Font.Color = wdColorGreen
        End If
        Selection.MoveRight Unit:=wdCharacter, Count:=1
    Next
    MsgBox "Ok!"
End Sub

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Найти и выделить текст цветом

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщений [ 10 ]

1 03.07.2011 18:03:38

  • vikky
  • рядовой
  • Неактивен
  • Зарегистрирован: 03.07.2011
  • Сообщений: 4

Тема: Найти и выделить текст цветом

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

2 Ответ от Nikodim 04.07.2011 09:10:05

  • Nikodim
  • майор
  • Неактивен
  • Зарегистрирован: 27.06.2011
  • Сообщений: 87
  • Поблагодарили: 21
  • За сообщение: 1

Re: Найти и выделить текст цветом

перед началом поиска разделите окно документа пополам (окно -> разделить)
в верхнем окне ищите слово, с которого нужно начать поиск.
после щелкаете курсором в нижнее окно, и поиск производите уже из него через кнопку «найти в основном документе». текст выделяется, щелкаете по палитре. при этом выделение  происходит и в верхнем и в нижнем окне.
убрать разделение окна: окно -> снять разделение.

можно разделить окно и не заходя в панель инструментов, просто щелкнув два раза ЛКМ в правом верхнем углу листа над полосой вертикальной линейки

3 Ответ от vikky 04.07.2011 19:12:09

  • vikky
  • рядовой
  • Неактивен
  • Зарегистрирован: 03.07.2011
  • Сообщений: 4

Re: Найти и выделить текст цветом

Nikodim пишет:

окно -> разделить

Спасибо:) Ваш совет помог:)

4 Ответ от Настаев 15.07.2011 00:54:27

  • Настаев
  • подполковник
  • Неактивен
  • Зарегистрирован: 14.07.2011
  • Сообщений: 176
  • Поблагодарили: 54

Re: Найти и выделить текст цветом

Могу предложить решение с помощью макроса

5 Ответ от vikky 16.07.2011 16:35:46

  • vikky
  • рядовой
  • Неактивен
  • Зарегистрирован: 03.07.2011
  • Сообщений: 4

Re: Найти и выделить текст цветом

Настаев пишет:

Могу предложить решение с помощью макроса

буду благодарна

6 Ответ от Настаев 16.07.2011 17:01:22

  • Настаев
  • подполковник
  • Неактивен
  • Зарегистрирован: 14.07.2011
  • Сообщений: 176
  • Поблагодарили: 54

Re: Найти и выделить текст цветом

    Sub Покрасить_с_подстановочными_знаками(ByVal что As String)
        'Запуская этот макрос из другого макроса, ему можно передать атрибут "что". Это очень удобно для поиска и замены разных слов и словосочетаний.

        'сбить выделение, чтобы макрос распространялся на весь документ
        Application.Selection.MoveLeft(Unit:=WdUnits.wdCharacter, Count:=1)

        'очистить формат поиска и замены
        Application.Selection.Find.ClearFormatting()
        Application.Selection.Find.Replacement.ClearFormatting()

        'настроить формат замены (используестя последний использованный цвет подсветки)
        Application.Selection.Find.Replacement.Highlight = True

        'параметры поиска
        With Application.Selection.Find
            .Text = что
            .Replacement.Text = "" 'в данном случае текст не будет удаляться или заменяться ничем. К нему будет применён формат поиска
            .Forward = True '
            .Wrap = WdFindWrap.wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = True
        End With

        'выполнить
        Application.Selection.Find.Execute(Replace:=WdReplace.wdReplaceAll)

    End Sub

7 Ответ от Framell 16.07.2011 17:27:43

  • Найти и выделить текст цветом
  • Framell
  • сержант
  • Неактивен
  • Откуда: Москва, Россия
  • Зарегистрирован: 11.03.2011
  • Сообщений: 27
  • Поблагодарили: 3

Re: Найти и выделить текст цветом

vikky пишет:

Как можно найти текст и выделить его определенным цветом?

Для таких целей используется команда Заменить (Replace), в которой нужно указать поиск и замену по формату (кнопка Формат в диалоговом окне)

В нашей стране чтобы быть бедным надо очень долго и хорошо учиться.

8 Ответ от Настаев 16.07.2011 17:59:12

  • Настаев
  • подполковник
  • Неактивен
  • Зарегистрирован: 14.07.2011
  • Сообщений: 176
  • Поблагодарили: 54

Re: Найти и выделить текст цветом

Напишите рядом с этим макросом другой макрос для его запуска с атрибутом искомого текста (то, чтобы вы писали в дислоговом окне «Найти»)

Например:

Sub Подсветка

   'подсветка скобок
   Покрасить_с_подстановочными_знаками("[()]") 'в кавычках передаётся строковый параметр - искомый текст

   'подсветка знака номер
   Покрасить_с_подстановочными_знаками("№") 

End sub

Запустив макрос «Подсветка» вы получите подсвеченные скобки и знак № во всём документе
Думаю, нетрудно сделать другой похожий макрос, только для подсветки без подстановочных знаков.
Лучше этого способа Вы не найдёте. Только не забудьте самом первом макросе (тот, который будет запускаться первым) вписать строку «Application.ScreenUpdating = false». Это действие отключит смену экрана пока будет выполнятся работа VBA. Иначе макросы выполняются долго.

9 Ответ от vikky 22.07.2011 17:34:34

  • vikky
  • рядовой
  • Неактивен
  • Зарегистрирован: 03.07.2011
  • Сообщений: 4

Re: Найти и выделить текст цветом

А можно создать макрос по следующей схеме?

Есть большой документ, в нем много номеров телефонов, необходимо сделать выборку.
Найти текст не выделенный цветом «89*********» или «8_9*********» (где * — какая-то цифра).
Запомнить.
Найти этот текст по всему документу.
Если одинаковых объектов больше 3, то выделить одним цветом, если меньше или равно трем, то выделить другим цветом.
Повторять условие пока ничего не найдет. В конце все телефоны станут раскрашены в два цвета.

10 Ответ от Настаев 29.07.2011 14:53:12

  • Настаев
  • подполковник
  • Неактивен
  • Зарегистрирован: 14.07.2011
  • Сообщений: 176
  • Поблагодарили: 54

Re: Найти и выделить текст цветом

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

Sub Одинаковые_слова()
 
    Dim j As Object
    
    'отключение смены экрана (чтобы не моргало во время выполнения макроса)
    Application.ScreenUpdating = False
    
    'для каждого слов в тексте
    For Each j In ActiveDocument.Words
    
        'если слово есть во всех предложениях
        If проверка(j.Text) Then
        
            'сделать красным
            j.Font.Color = WdColor.wdColorDarkRed
                    
        End If
        
    Next
    
    'сообщить о завершении выполнения
    MsgBox "Готово"
    
End Sub
Function проверка(ByRef слово As String) As Boolean
 
    Dim j As Object
    
    'для каждого предложения в тексте
    For Each j In ActiveDocument.Sentences
    
        'если слова нет в этом предложении (учитывается регистр)
        If InStr(j, слово) = 0 Then
        
            'выход из функции (будет возвращён отрицательный результат)
            Exit Function
        
        End If
        
    Next j
    
    'возврат положительного результата
    проверка = True
    
End Function

Сообщений [ 10 ]

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Похожие темы

  • Выделить текст, но не печатать выделение
  • Как научить ворд выделять цветом ключевые слова и текст после //
  • Выделить текст, имеющий такой же формат
  • Необх-мо найти выделенный текст и подчеркнуть
  • Поиск выделенных цветом слов
  • Лжевыделение цветом текста, скопированного из Блокнота.
  • Автоматическое выделение цветом строк таблицы
  • Одновременное выделение цветом разных слов.

Найти и выделить текст цветом

Многие применяют для работы с текстом редактор  Microsoft Word. Рано или поздно у пользователей этой программы возникают разные вопросы. Наш сайт о Microsoft Office Word даст ответ про: как сделать автообновление полей?.
До недавнего времени информацию в сети было найти затруднительно, так как она разбросана по разным ресурсам и форумам. Наш сайт о Microsoft Office Word даст ответ про: оформление документа в текстовом редакторе ms word.
Но вот наконец появился форум, на котором вся информация по работе с Microsoft Word собрана воедино. Наш сайт о Microsoft Office Word даст ответ про: установить шрифт по умолчанию word 2007.
Форум Ворд Эксперт предназначен для русскоязычных пользователей, интерфейс интуитивно понятен, а регистрация быстра и легка. Наш сайт о Microsoft Office Word даст ответ про: программа не работает возникшая проблема привела к прекращению работы программы.

На форуме можно задать вопрос о настройках, форматированию и редактированию документов, узнать все о шаблонах, полях и макросах. Наш сайт о Microsoft Office Word даст ответ про: как перевести из ворд 2010 в 2003.
И даже найти готовые макросы и инструкции по их созданию своими руками. Если же вы захотите, то можно оставить заявку на написание макроса в соответствующем разделе сайта. Наш сайт о Microsoft Office Word даст ответ про: как сделать в ворде шрифт вниз.

При любых сложностях в работе с программой, разработке шаблонов, создании таблиц или редактировании текста вы можете задать вопрос на форуме. Наш сайт о Microsoft Office Word даст ответ про: выделенный фрагмент заблокирован.
Обязательно указывайте, какой версией редактора вы пользуетесь. Можно сделать это в подписи. Также на сайте можно найти ссылки с полезной информацией по Microsoft Word и различную литературу, готовые решения и советы по оптимизации работы с редактором. Наш сайт о Microsoft Office Word даст ответ про: антонимы онлайн словарь.

  • iiil

Есть нижние подчеркивание в тексте между словами вместо пробелов (пример: солнце_светит). Как сделать так, чтобы макрос окрасил все нижние подчеркивания в белый цвет.


  • Вопрос задан

    более трёх лет назад

  • 11631 просмотр

Макросы для такого не нужны.
Выделяете одно нижнее подчеркивание — в меню Главная кнопка «Заменить»
В поле найти «_» — без кавычек, в поле Заменить на «_» — без кавычек, выделяете это нижнее подчеркивание, кнопка «Больше >>» > Формат > Шрифт > Цвет выбираете белый и Нажимаете заменить все.
А зачем Вам такое делать? Может просто воспользоваться неразрывными пробелами?

Пригласить эксперта


  • Показать ещё
    Загружается…

17 апр. 2023, в 11:02

12000 руб./за проект

17 апр. 2023, в 10:42

4000 руб./за проект

17 апр. 2023, в 10:41

2000 руб./за проект

Минуточку внимания

Понравилась статья? Поделить с друзьями:
  • Цвет активных ячеек в excel
  • Художник который рисует в excel
  • Художественное оформление документов word
  • Хронологический порядок в excel
  • Хранить данные в excel