- 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» ThenApplication.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:
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
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 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 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 позволяет задать параметры форматирования шрифта.
Содержание
- Объект 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 свойств«) сбрасываются параметры форматирования шрифта и меняется регистр символов.