Word selection font bold

  • Home
  • Forum
  • VBA Code & Other Help
  • Word Help
  • Selection.Font.Bold = True doesn’t work

  1. 01-10-2009, 02:48 AM


    #1

    Selection.Font.Bold = True doesn’t work

    I tried use VBA to bold a selected word in MS Word. The code is …

    Selection.Font.Bold = True

    However, this doesn’t work. I also tried

    Selection.Font.Bold = wdToggle

    And this doesn’t work also. Please help.


  2. 01-10-2009, 03:52 AM


    #2

    Hi vaxim,

    It works for me. What version of Word are you using? Are macros enabled?

    Cheers
    Paul Edstein
    [Fmr MS MVP — Word]


  3. 01-10-2009, 06:26 AM


    #3

    dear macropod

    I use Word 2003 and I think macro is enabled because I can run other VBA script.


  4. 01-10-2009, 10:13 AM


    #4

    You have to actually select some text vaxim……manually or with code.

    Just having the cursor in the line will not work.

    Steve
    «Nearly all men can stand adversity, but if you want to test a man’s character, give him power.»
    -Abraham Lincoln


  5. 01-10-2009, 06:12 PM


    #5

    I tried

    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Font.Bold = True

    But the selected text was not bold.


  6. 01-10-2009, 11:22 PM


    #6

    Hi vaxim,

    With your latest code, all that gets the bold font is the string from the right of the insertion point until the end of the word in which the insertion point in located, plus the following puntuation character. For example, with the text «The quick brown fox jumps over the lazy dog.», if the insertion point is between the ‘w’ and ‘n’ in ‘brown’, all that gets the bold font is the ‘n ‘. If the insertion point is after the ‘n’ in ‘brown’, all that gets the bold font is the ‘ ‘ and, if the insertion point is beyween the ‘ ‘ and ‘b’ in ‘brown’, what gets the bold font is ‘brown ‘.

    Perhaps you could explain what you’re trying to do.

    Cheers
    Paul Edstein
    [Fmr MS MVP — Word]


  7. 01-11-2009, 01:05 AM


    #7

    Hi Macropod

    Thank you for your reply. I tested the lastest macro in this thread with the string «the quick brown …» The result is the same as you said. However, when I tested with the string in Thai language, the macro cannot bold any word at all.

    Fortunately, now I know a solution to this problem. I changed

    Selection.Font.Bold = True

    to

    Selection.Font.BoldBi = True

    And the macro can bold a Thai word.


  8. 01-12-2009, 12:58 PM


    #8

    .Bold applies to left-to-right languages.

    The BoldBi property applies to text in a right-to-left language.

    Note that BoldBi also applies to the Range object in right-to-left languages. It applies to the color index (Font.ColorIndexBi). It applies to italics (Font.ItalicsBi; Range.Font.ItalicsBi) and all the format properties, such as Font.SizeBi.


  9. 01-21-2009, 07:51 AM


    #9

    Have you defined your Word application object? Otherwise Selection by itself would be ambiguous to VB. For example:

    Dim oWord As Word.Application
    Set oWord As New Word.Application (or the name of your existing file)

    Once you have that then you can select the desired text either manually or with the code and do:

    oWord.Selection.Font.Bold = True


  10. 01-21-2009, 11:18 AM


    #10

    Huh?

    1. What makes you think there is any need for an explicit application object? The OP never mentions VB, or actioning Word from any other application.

    The OP wrote: «I tried use VBA to bold a selected word in MS Word.»

    Therefore they ARE in Word. There is no need for an oWord As Word.Application.

    2. The OP does mention that they are using Thai language.

    Fortunately, now I know a solution to this problem. I changed

    Selection.Font.Bold = True

    to

    Selection.Font.BoldBi = True

    And the macro can bold a Thai word.

    The reason .BoldBi does work (and .Bold does not) is BECAUSE it is Thai. .Bold will never work — with or without an properly defined application object — on a right-to-left language.

    All format properties require the use of Bi for these languages.

    .SizeBi
    .BoldBi
    .ItalicsBi

    etc.



Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
  • BB code is On
  • Smilies are On
  • [IMG] code is On
  • [VIDEO] code is On
  • HTML code is Off

Forum Rules

I make a several page word document every week. I copy text from a PDF and paste it into a word document, I then format the text that I pasted.

This takes a long time and i would like to automate it.

I need a macro or some code to select specific text, then make that text bold. The specific text i need to bold is what i call a scrap code.

There are 60 different codes. For example «FIPS», or «LILL».

0m3r's user avatar

0m3r

12.2k15 gold badges33 silver badges70 bronze badges

asked Dec 16, 2010 at 2:51

Aaron's user avatar

Something like this:

Sub A()
'
' a Macro
'
'
Dim A(3) As String

A(1) = "code1"
A(2) = "code2"
A(3) = "code3"

For i = 1 To 3
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
       .Forward = True
       .Wrap = wdFindStop
       .Format = False
       .MatchCase = False
       .MatchWholeWord = False
       .MatchWildcards = False
       .MatchSoundsLike = False
       .MatchAllWordForms = False
       .Replacement.Font.Bold = True

       .Execute FindText:=A(i), ReplaceWith:=A(i), Format:=True, _
         Replace:=wdReplaceAll

    End With
Next i
End Sub  

HTH!

Edit

To switch dollar amounts to bold

Sub a()
'
' a Macro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Bold = True
    With Selection.Find
        .Text = "$([0-9.,]{1,})"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

answered Dec 16, 2010 at 7:26

Dr. belisarius's user avatar

Dr. belisariusDr. belisarius

60.4k15 gold badges114 silver badges190 bronze badges

3

I would suggest recording a macro.
Then do all the modifications and formatting.
Finally, look at the code of the macro and see how it did it.

The one thing you need to figure out is how you logically want to locate the text you want to bold.
Is it a specific line? Is it at the beginning of a known word?

Once you have that answered, you can combine it with the code of the macro and automate the task.

answered Dec 16, 2010 at 3:02

BeemerGuy's user avatar

BeemerGuyBeemerGuy

8,1192 gold badges35 silver badges46 bronze badges

1

Аннотация: Лекция посвящена описанию объектов Selection и Range, описанию особенностей работы с автоматически выполняемыми макросами и шаблонами.

11.1. Объект Selection

Выше нам уже встречался и объект Selection, и объект Range. Здесь пришло время поговорить о них подробнее, обсудить особенности их использования.

Напомню, что объект Application.Selection представляет собой выделенный участок документа или, если ничего не выделено, позицию курсора. Именно этим объектом пользуется макрорекордер при записи макроса, выполняющего какие-либо операции с текстом.

У Selection есть два основных применения. Первое — автоматическое создание документов, не требующее правки шаблонов и других подобных операций. И второе — работа с фрагментом документа, предварительно выделенного пользователем.

Выделения можно создавать и программно, но эту методику практически никогда не используют на практике. Например, код листинга 11.1 выделяет седьмое слово в документе и форматирует его курсивом:

ActiveDocument.Words.Item(7).Select
Selection.Font.Italic = True


Листинг
11.1.
Выделяем седьмое слово и форматируем его

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

Объект Selection обычно используют без объявления объектной переменной. Например, для вставки в выделенную позицию документа текста «Привет» достаточно конструкции листинга 11.2.

Selection.Text = "Привет"


Листинг
11.2.
Добавляем текст в выделенную позицию документа

Минус использования Selection при автоматической обработке текста зависит от того, что он слишком чувствителен к действиям пользователя. Например, мы напишем программу, которая, имитируя выделение фрагментов текста с клавиатуры, обрабатывает текст. Если во время обработки текста пользователь вмешается, случайно кликнув мышью в документе, работа такой программы будет нарушена.

Рассмотрим основные свойства и методы объекта Selection.

11.2. Методы объекта Selection

11.2.1. ClearFormatting — очистить форматирование

Этот метод очищает форматирование выделенного участка документа.

11.2.2. Copy, Cut, Paste, Delete

Методы Copy и Cut, соответственно, копируют и вырезают выделенный фрагмент в буфер обмена, а метод Paste — вставляет материалы из буфера в область выделения.

Метод Delete удаляет выделенный фрагмент

11.2.3. InsertAfter, InsertBefore — добавление текста

Как следует из их названий, методы InsertAfter и InsertBefore позволяют вставить текст после или до выделения. Существуют и другие методы, название которых начинается с Insert. Они позволяют вставлять множество других объектов в выделенную область. Например, InsertBreak вставляет разрыв страницы, колонки или раздела, InsertCells вставляет в выделенную таблицу ячейки и т.д.

11.2.4. TypeBackspace — удалить символ

Удаляет один символ, предшествующий позиции курсора, имитируя нажатие клавиши Backspace на клавиатуре.

11.2.5. TypeParagraph — перевод строки

Имитирует нажатие клавиши Enter на клавиатуре — вставляет в текст знак перевода строки.

11.2.6. TypeText — вывести текст в документ

Вводит в документ текст. У метода есть лишь один параметр — Text. Он должен содержать тот текст, который должен быть выведен в документ. Ниже мы рассмотрим примеры, где используется этот метод.

11.2.7. WholeStory — выделить весь документ

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

11.3. Свойства объекта Selection

11.3.1. Bookmarks и другие

Это свойство возвращает коллекцию Bookmarks, которая содержит все закладки, имеющиеся в выделении. Существуют подобные свойства для символов ( Characters ), таблиц ( Tables ) и многих других коллекций объектов. Работа с ними ни чем не отличается от работы с аналогичными коллекциями, входящими в Document.

11.3.2. End и Start

Эти свойства позволяют узнать и модифицировать, соответственно, конечную ( End ) и начальную ( Start ) позиции выделения.

11.3.3. Font — шрифт

Это свойство позволяет узнавать и настраивать параметры шрифта выделенного фрагмента. Например, код, приведенный в листинге 11.3 форматирует текст. Пояснения к примеру приведены в комментариях.

'Полужирный
    Selection.Font.Bold = wdToggle
    'Курсивный
    Selection.Font.Italic = wdToggle
    'Подчеркнутый
    Selection.Font.Underline = wdUnderlineSingle
    'Гарнитура Arial Narrow
    Selection.Font.Name = "Arial Narrow"
    'Размер шрифта - 14
    Selection.Font.Size = 14
    'Цвет шрифта - красный - из
    'перечисления wdColorR
    Selection.Font.Color = wdColorRed


Листинг
11.3.
Форматируем текст

11.3.4. Information — подробности о выделении

Позволяет узнать подробности о выделении. Это свойство может принимать параметр типа wdInformation, который и определяет, что именно возвратит свойство.

11.3.5. Range — переход от Selection к Range

Это свойство позволяет получить объект Range, соответствующий выделению.

Например, этим свойством можно воспользоваться так, как показано в листинге 11.4.

Dim obj_Range As Range
Set obj_Range = Selection.Range


Листинг
11.4.
Получаем объект Range из Selection

11.3.5. Text — текст выделения

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

11.4. Пример работы с Selection

11-01-Selection.docm— пример к п. 11.4.

Рассмотрим пример использования вышеперечисленных свойств и методов (а заодно – и некоторых других), решив небольшую задачу.

11.4.1. Задание

Создать новый документ, и добавить в него текст, который был выделен в текущем документе. Каждое слово этого текста надо напечатать отдельно, с новой строки. Каждое слово должно предваряться таким текстом: «Слово №x:», где x — номер слова в выделенном тексте. После вывода слов нужно подсчитать количество слов и количество букв в этих словах и вывести строку «Всего обработано «x» слов, состоящих из «xx» букв». Готовый документ сохранить на диске C:, задав в качестве его имени такую структуру:

"Имя_исходного_документа"+ "текущая дата"+ "обработано".docm

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

11.4.2. Решение

Создадим новый макрос ( Copy_To_File ), воспользовавшись окном Макросы, которое можно открыть с вкладки Вид.

Добавим в макрос код из листинга 11.5.

'Переменая для хранения ссылки на новый документ
    Dim obj_NewDoc As Document
    'Для ссылки на исходный документ
    Dim obj_OurDoc As Document
    'Динамический массив для хранения слов
    Dim WordsArray() As String
    'Переменная для хранения количества слов
    Dim WordsCount
    'Переменная для формирования строк,
    'которые выводятся в новый документ
    Dim OutString
    'Переменная для хранения количества
    'символов в обработанных словах
    Dim LettersCount
    'В этой переменной будем создавать
    'имя файла
    Dim NewDocName
    'Запишем ссылку на активный документ
    'Для того, чтобы вернуться в него
    'после работы с новым документом
    Set obj_OurDoc = ActiveDocument
    WordsCount = Selection.Words.Count
    LettersCount = Selection.Characters.Count
    ReDim WordsArray(WordsCount)
    'Переносим слова из выделения
    'в массив для удобства работы с ними
    For i = 1 To WordsCount
        WordsArray(i) = Selection.Words.Item(i)
    Next i
    'Создадим новый документ
    Set obj_NewDoc = Documents.Add
    'И сделаем его активным
    obj_NewDoc.Activate
    'Теперь объект Selection относится к активному
    'документу и мы начинаем вводить в него данные
    Selection.TypeText ("Список выделенных слов")
    Selection.TypeParagraph
    For i = 1 To WordsCount
        OutString = "Слово №" + Str(i) + ": " + _
        WordsArray(i)
        Selection.TypeText (OutString)
        Selection.TypeParagraph
    Next i
    Selection.TypeText ("Всего обработано " + _
    Str(WordsCount) + _
    " слов(а), в которых содержится " + _
    Str(LettersCount) + " символа(ов)")
    'Создаем имя нового документа
    NewDocName = obj_OurDoc.Name + " " + _
    Str(Date) + " Обработано.docx"
    'Установим корневой каталог диска C:
    'для сохранения нового файла по умолчанию
    ChangeFileOpenDirectory "C:"
    'Используем метод SaveAs для
    'автоматического сохранения
    'документа
    ActiveDocument.SaveAs _
    FileName:=NewDocName, _
    FileFormat:=wdFormatDocumentDefault
    'Закрываем активный документ
    ActiveDocument.Close
    'Активируем документ, в котором мы выделяли
    'слова
    obj_OurDoc.Activate
    'Отмечаем обработанный участок
    'скобками и выделением синим цветом
    Selection.InsertAfter (") ")
    Selection.InsertBefore (" (")
    Selection.Font.Color = wdColorBlue
    'Выделяем первый символ текущего выделения и
    'выводим сообщение о том, что операция
    'выполнена
    Selection.Characters(1).Select
    MsgBox ("Выполнено!")


Листинг
11.5.
Решение задачи

Как видите, в этом примере мы используем исключительно объект Selection для работы с текстом документов. Обратите внимание на то, что мы нигде специально не храним информацию о выделенной области первого документа. Создав второй документ, мы просто делаем его активным и работаем с ним, используя его объект Selection. В это время выделение сохраняется в исходном документе. Однако, если в это время пользователь случайно или умышленно изменит выделение текущего документа — программа будет работать неправильно — она выделит не тот фрагмент, который был передан ей для обработки, а совсем другой.

title keywords f1_keywords ms.prod api_name ms.assetid ms.date ms.localizationpriority

Font.Bold property (Word)

vbawd10.chm156369026

vbawd10.chm156369026

word

Word.Font.Bold

84e8d6b7-1be4-e1c5-c246-a6370011bc8b

06/08/2017

medium

Font.Bold property (Word)

True if the font is formatted as bold. Read/write Long.

Syntax

expression.Bold

expression A variable that represents a Font object.

Remarks

Returns True, False or wdUndefined (a mixture of True and False). Can be set to True, False, or wdToggle.

Example

This example makes the entire selection bold if part of the selection is formatted as bold.

If Selection.Type = wdSelectionNormal Then 
 If Selection.Font.Bold = wdUndefined Then _ 
 Selection.Font.Bold = True 
Else 
 MsgBox "You need to select some text." 
End If

See also

Font Object

[!includeSupport and feedback]

Multiple objectsFont
Multiple objects

Contains font attributes (font name, font size, color, and so on) for an object.

Using the Font Object

Use the Font property to return the Font object. The following instruction applies bold formatting to the selection.

Selection.Font.Bold = True
		

The following example formats the first paragraph in the active document as 24point Arial and italic.

Set myRange = ActiveDocument.Paragraphs(1).Range
With myRange.Font
    .Bold = True
    .Name = "Arial"
    .Size = 24
End With
		

The following example changes the formatting of the Heading 2 style in the active document to Arial and bold.

With ActiveDocument.Styles(wdStyleHeading2).Font
    .Name = "Arial"
    .Italic = True
End With
		

Remarks

You can use the New keyword to create a new, stand-alone Font object. The following example creates a Font object, sets some formatting properties, and then applies the Font object to the first paragraph in the active document.

Set myFont = New Font
myFont.Bold = True
myFont.Name = "Arial"
ActiveDocument.Paragraphs(1).Range.Font = myFont
		

You can also duplicate a Font object by using the Duplicate
property. The following example creates a new character style with the character formatting from the selection as well as italic formatting. The formatting of the selection isn’t changed.

Set aFont = Selection.Font.Duplicate
aFont.Italic = True
ActiveDocument.Styles.Add(Name:="Italics", _
    Type:=wdStyleTypeCharacter).Font = aFont
		

Like this post? Please share to your friends:
  • Word selection find text
  • Word select text by font
  • Word select table cell
  • Word select row in table
  • Word select from list