Vba word изменить шрифт

  • Remove From My Forums
  • Question

  • Hello,

    Basically all I want to do is change the default font by clicking on a button. Then when another document is opened that font is used. Below is my code which sets the font of the «normal style», then copies that style to the normal.dot. This works for my home computer but I need to be able to this another way.

    Is there a quicker or another way to achieve this without having to hard code in the location of the normal.dot

    Many Thanks

    Private Sub CommandButton1_Click()

       With ActiveDocument.Styles(wdStyleNormal).Font
            .Name = «Wingdings 2»
            .Size = 12
        End With
       
    ‘ For Each styleloop In ActiveDocument.Styles
    ‘    If styleloop = «Normal» Then

            Application.OrganizerCopy Source:=ActiveDocument.Name, _
            Destination:=»C:Documents and SettingsAlex WilliamsApplication DataMicrosoftTemplatesNormal.dot», _
            Name:=»Normal», _
            Object:=wdOrganizerObjectStyles
    ‘    End If
    ‘Next styleloop
       
       
    End Sub

1
2
3
4
5
6
7
8
9
10
11
12
Function Translit(ByVal sValue As String) As String
    'Переменные
    Dim sRussian As String, iCount As Integer, sTranslit As Variant
    'Запись с русскими буквами
    sRussian = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя"
    'Массив с англ. буквами
    sTranslit = Array("", "A", "B", "V", "G", "D", "E", "Yo", "Zh", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "Kh", "C", "Ch", "Sh", "Shh", "``", "Y", "`", "E'", "Yu", "Ya", "a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "c", "ch", "sh", "shh", "``", "y", "`", "e'", "yu", "ya")
    For iCount = 1 To 66                                                                                   'Начало цикла
        sValue = Replace(sValue, Mid(sRussian, iCount, 1), sTranslit(iCount), , , vbBinaryCompare)
    Next                                                                                                   'Конец цикла
    Translit = sValue                                                                                      'Присвоение значения
End Function

In this article, I will discuss on how to detect the font size and change the font size to the size as we want to change with two examples of code. In the first example, it is about changing the font size within the defined range of font size and in the second one; it is about changing all font size to one defined size.

To work with the font size with vba, we need to use Word.Range to detect the font size and change the font size. Here are the two example of codes

Example 1: Changing font size withthe defined font size

SubStandardizeFontSize (oWord As Word.Range)

    IfoWord.Font.Size < 16 And oWord.Font.Size > 12 Then

        oWord.Font.Size = 16

    ElseIfoWord.Font.Size < 12 And oWord.Font.Size > 11 Then

        oWord.Font.Size = 12

    ElseIfoWord.Font.Size <= 11 And oWord.Font.Size > 9 Then

        oWord.Font.Size = 11

    ElseIfoWord.Font.Size <= 9 Then

        oWord.Font.Size = 10

    ElseIfoWord.Font.Size = 9999999 Then‘999999 — represents word with characters of different size

        sFontSize = oWord.Characters(1).Font.Size

        Forj = 1 To oWord.Characters.Count

            IfoWord.Characters(j).Font.Size = sFontSize Then: oWord.Characters(j).Font.Size = 12

            Else: oWord.Characters(j).Font.Size = 10

            End If

        Next

    End If

EndSub

Example 2: Change font size to a 12 pt

PublicSub ChangeFontSize()

    DimoParagraph As Paragraph

    DimoRange As Range

    Dimi, j As Integer

    DimsFontSize As Single

    ForEach oParagraph In Selection.Paragraphs

        Set oRange = oParagraph.Range

        Fori = 1 To oRange.Words.Count

            IfoRange.Words(i).Font.Size = 9999999 Then‘999999 — represents word with characters of different size

                sFontSize = oRange.Words(i).Characters(1).Font.Size

                Forj = 1 To oRange.Words(i).Characters.Count

                    IfoRange.Words(i).Characters(j).Font.Size = sFontSize Then

                        oRange.Words(i).Characters(j).Font.Size = 12

                    Else

                        oRange.Words(i).Characters(j).Font.Size = 12

                    End If

                Next

            End If

        Next

    Next

EndSub

How to test this Code

1. Open Ms Word

2. Open VB Editor or Alt+F11

3. Create new module

4. Copy and paste the Code

5. Go back to you word and go to Macro Dialog then select the Macro Name StandardizeFontSize and Click on Run

I’m trying to figure out how to set the font style for an entire word document, exactly the way it’s done by choosing a style preset in the menu:

Changing font style presets

Since I’ve already made a macro that converts the entire document word for word, what I’m trying to accomplish with this is changing all the preset tiles (Normal, No Spacing, Title, Heading 1, etc.) to match this existing preset, and not the old presets (with the old fonts).

Is this possible, and what object do I modify to accomplish this?

asked Jul 30, 2018 at 13:48

Rydberg1995's user avatar

Try this …

Sub ChgFontInAllStyles()
Dim sty As Word.Style
For Each sty In ActiveDocument.Styles
    If sty.InUse And sty.Type = wdStyleTypeParagraph Then
        sty.Font.Name = "Arial"
    End If
Next
End Sub

answered Jul 30, 2018 at 14:37

Rich Michaels's user avatar

Rich MichaelsRich Michaels

1,6482 gold badges12 silver badges18 bronze badges

1

What you show in the screen shot is an Office Theme. This is not the same as a Word style, although some of the settings do «filter through» to the built-in styles and custom styles that base on these.

Themes is a complex topic if it’s a question of defining a custom theme programmatically. If all you want to do is apply an existing theme, then:

Dim sThemePath as String
sThemePath = "C:Program FilesMicrosoft OfficeDocument Themes 14Equity.thmx"
ActiveDocument.ApplyDocumentTheme sThemePath

It’s necessary to specify the entire path. In the sample code this is the default path for the built-in Office themes for Office 2010.

answered Jul 30, 2018 at 14:31

Cindy Meister's user avatar

Cindy MeisterCindy Meister

24.9k21 gold badges35 silver badges43 bronze badges

1

Приветствую всех читателей блога 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 свойств«) сбрасываются параметры форматирования шрифта и меняется регистр символов.

Like this post? Please share to your friends:
  • Vba word изменить цвет текста
  • Vba word значения таблицы
  • Vba word знак абзаца
  • Vba word защита документа
  • Vba word заполнение таблиц