Всем привет, с вами автор блога scriptcoding.ru. В этой статье мы рассмотрим коллекцию Paragraphs и объект Paragraph – оба элемента позволяют задать основные параметры абзаца в Word документе.
Стоит обратить внимание, что большая часть свойств и методов являются идентичными. Так, если мы используем некоторое свойство, работая с коллекцией, то оно будет влиять на все основные параметры абзаца в Word, если свойство или метод используются только для конкретного объекта Paragraph, то обрабатываться будет параметр конкретного абзаца. В самой статье я приведу примеры программного кода для сценариев сервера Windows Script Host – VBScript и JScript.
И так, давайте приступим…
Paragraph и Paragraphs – основные параметры абзаца в Word
Как и большинство коллекций и объектов модели Word, коллекция Paragraphs содержит все объекты Paragraph. Прежде чем приступать к обработке абзацев, нужно сначала получить ссылку на коллекцию Paragraphs, это можно сделать с помощью одноименно свойства классаSelection (смотрите статью «Объект Word Selection — выделить весь текст в ворде, свойства«) или класса Range (статья «Объект Word Range — Выбор текста«). Также стоит учитывать, что коллекция будет содержать те параграфы, которые входят в выделенный или выбранный диапазон текста.
Общие свойства – параметры форматирования абзацев
Alignment— Позволяет задать или получить значение константы WdParagraphAlignment, которая отвечает за выравнивание текста:
- wdAlignParagraphLeft — 0 – По левому краю.
- wdAlignParagraphCenter — 1 – По центру.
- wdAlignParagraphRight — 2 — По правому краю.
- wdAlignParagraphJustify — 3 – По ширине.
- wdAlignParagraphDistribute — 4 – Распределяет символы так, что бы заполнить по ширине все окно.
- wdAlignParagraphJustifyMed — 5 — По ширине со средней степенью сжатия символов.
- wdAlignParagraphJustifyHi — 7 — По ширине с высокой степенью сжатия символов.
- wdAlignParagraphJustifyLow — 8 — По ширине с низкой степенью сжатия символов.
CharacterUnitFirstLineIndent– Задает или возвращает отступ первой строки.
CharacterUnitLeftIndent– Выступ слева
CharacterUnitRightIndent– Отступ справа
FirstLineIndent— Возвращает или устанавливает значение (в пунктах) для первой линии или отступа.
LeftIndent– Отступ слева в пунктах.
RightIndent– Отступ справа в пунктах.
LineSpacing– Междустрочный интервал.
LineSpacingRule— Возвращает или устанавливает междустрочный интервал, который определяет значение константы WdLineSpacing:
- wdLineSpaceSingle — 0 – одинарный, по умолчанию
- wdLineSpace1pt5 — 1 – 1,5 строки.
- wdLineSpaceDouble — 2 – двойной.
- wdLineSpaceAtLeast — 3 – минимум.
- wdLineSpaceExactly — 4 – точно.
- wdLineSpaceMultiple — 5 — междустрочный интервал определяется количеством линий указано.
LineUnitAfter– Интервал после параграфа.
LineUnitBefore– Интервал перед параграфом.
ReadingOrder— Возвращает или устанавливает такие основные параметры форматирования для абзаца, как порядок чтения без изменения их выравнивания. Содержит значение константы WdReadingOrder:
- wdReadingOrderLtr — 1 – Слева направо
- wdReadingOrderRtl — 0 – Справа налево
SpaceAfter– Интервал в пунктах после параграфа.
SpaceBefore— Интервал в пунктах перед параграфом.
Style— Возвращает или задает такие настройки параметров абзаца, как стиль. Свойство принимает имя стиля, или значение константы WdBuiltinStyle.
Общие методы – настройка параметров абзаца
Indent() – Позволяет добавить отступ на один пункт.
Outdent() — Позволяет удалить отступ на один пункт.
IndentCharWidth(count) – Добавляет отступ на заданное количество символов.
IndentFirstLineCharWidth(count) — Отступ первой строки на заданное количество символов.
Reset() — Удаляет ручное форматирование – не влияет на форматирование стиля.
TabHangingIndent(count) — Устанавливает висячий отступ на заданное значение.
TabIndent(count) — Устанавливает отступ слева на заданное значение.
OpenOrCloseUp() – Вставляет или удаляет интервал в 12 пунктов перед указанным абзацем.
OpenUP() – Вставляет интервал в 12 пунктов перед указанным параграфом.
CloseUP() – Удаляет интервал в 12 пунктов перед указанным параграфом.
OutlineDemote() и OutlinePromote() – Применяют стиль Заголовок к указанному параграфу.
OutlineDemoteToBody() – Применяет нормальный стиль.
Space1() — Одинарный междустрочный интервал.
Space15() – Междустрочный интервал в 1.5 строки.
Space2() – Двойной междустрочный интервал.
Свойство и методы коллекции Paragraps – основные параметры абзаца
Count– Содержит количество параграфов в документе. Только чтение.
Item(count) – Позволяет получить доступ к указанному абзацу в коллекции, вернет объект Paragraph.
Add() — Возвращает объект Paragraph, который представляет параметры форматирования нового абзаца, который является пустым, добавленным в документ.
DecreaseSpacing() — Уменьшает отступ между параграфами на 6 пунктов.
IncreaseSpacing() — Увеличивает отступ между параграфами на 6 пунктов.
Методы объекта Paragraph – параметры форматирования абзацев
Next(count) — Возвращает объект Paragraph, представляющий основные параметры следующего абзаца в Word.
Previous(count) — Возвращает объект Paragraph, представляющий основные параметры предыдущего абзаца в Word.
И так, с теоретической частью мы закончили, теперь можно приступить к программированию. Рассмотрим два простых примера на языке VBScript и JScript, я сначала приведу программный код, а уже в конце дам пояснения.
Пример на языке программирования VBScript:
' ---------------------------------------------------------------------------- ' Коллекция Paragraph и класс Paragraph ' Выравнивание и изменение междустрочного интервала ' Основные параметры абзацев в Word ' Paragraph.vbs ' ---------------------------------------------------------------------------- Option Explicit dim oWord, oDoc, oSel, i, oPars, MyText, j Set oWord = CreateObject("Word.Application") Set oDoc = oWord.Documents oDoc.Add() Set oSel = oWord.Selection Set oPars = oSel.Paragraphs oWord.Visible = True MyText = "параметры форматирования абзаца. " For i=0 to 10 oSel.TypeText MyText & MyText & MyText & MyText & MyText & MyText & MyText oSel.TypeParagraph Next oDoc(1).Select i=1:j=0 ' настройка параметров каждого абзаца Do While i <= oPars.Count if j = 2 then oPars(i).LineSpacing = 3 if j = 3 then j = 0 ' Меняем выравнивание абзаца oPars(i).Alignment=j j = j + 1 else oPars(i).Alignment=j j = j + 1 end if i = i + 1 Loop |
Пример на языке программирования JScript:
// ---------------------------------------------------------------------------- // Коллекция Paragraph и класс Paragraph // Выравнивание и изменение междустрочного интервала // Основные параметры абзацев в Word // Paragraph.js // ---------------------------------------------------------------------------- var oWord1, oDoc1, oSel1, oPars1, MyText1 = "параметры форматирования абзаца. ", oRange1; oWord1 = WScript.CreateObject("Word.Application"); oDoc1 = oWord1.Documents; oDoc1.Add(); oSel1 = oWord1.Selection; oWord1.Visible = true; // Вставляем текст for (i=0; i<=10; i++){ oSel1.TypeText(MyText1 + MyText1 + MyText1 + MyText1 + MyText1 + MyText1 + MyText1); oSel1.TypeParagraph(); } // Создаем ссылку для Range Word // Заодно выбираем весь текст oRange1 = oDoc1(1).Range(); oPars1 = oRange1.Paragraphs; var i = 1, j = 0; // настройка параметров каждого абзаца while (i <= oPars1.Count){ if (j == 2){ oPars1(i).LineSpacing = 3;} if (j == 3){ j = 0; // Меняем выравнивание oPars1(i).Alignment=j; j ++ }else{ oPars1(i).Alignment=j; j ++ } i ++ } |
Хорошо, теорию разобрали, программированием занялись, теперь надо дать пояснения к сценариям:
Объявление переменных – в самом начале мы объявляем переменные, в языке vbscript это делается в блоке dim, а в языке программирования jscript – в блокеvar. Обратите внимание, что в vbs мы включили проверку переменных с помощью оператора Option Explicit. Сами имена переменных отличаются, так, для JS скрипта я приписал единицу.
Подключение внешних классов – Далее происходит процесс создания ссылок на внешние классы, которые позволяют создать новый документ, задавать параметры форматирования абзацев, управлять вставкой текста и так далее. Обратите внимание, что для vbs мы использовали ключевое слово set.
Вставка содержимого – В цикле for (смотрите синтаксис для vbscript — «Урок 6 по VBScript: Циклы for…next и for each…next» и jscript — «Урок 9 по JScript — оператор цикла for«) происходит вставка несколько раз содержимого переменной MyText параллельно с параграфом.
Настройка параметров абзаца – Тут снова используется цикл for, в котором в заданном порядке происходит форматирование – меняется интервал, выравнивание и так далее. Обратите внимание, что в vbs сценарии мы получили доступ к параграфам через Selection, а в js – через Range.