Всем привет, с вами автор блога 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.
Спасибо за внимание. Автор блога Владимир Баталий