Всем привет, с вами автор блога scriptcoding.ru. В данной статье мы рассмотрим коллекцию ListParagraphs и объект ListParagraph, которые позволяют обрабатывать форматированные абзацы в Word, те абзацы, к которым было применено форматирование списка.
Коллекция ListParagraphs предоставляет набор объектов Paragraph, которые являются отформатированными абзацами в ворде, то есть, параграфы, к которым применялось форматирование в виде списка. Это довольно удобно, так как мы можем в индивидуальном порядке обработать только те абзацы в ворде, которые представляют список (маркированный, нумерованный и так далее).
Доступ к коллекции осуществляется через одноименное свойство ListParagraphs, которое есть у объекта Document. Помним, что для формирования списков используется объект ListFormat, в состав которого входят такие методы как ApplyListTemplate, ApplyBulletDefault, ApplyNumberDefaultили ApplyOutlineNumberDefault.
Коллекция ListParagraphs – абзац в ворде
Свойства – как в ворде сделать абзац
Application— Возвращает объект Application, представляющий приложение Microsoft Word.
Count– Содержит количество классов Paragraph (абзац в Word).
Item(index) – Свойство позволяет получить доступ к заданному номеру (index) в коллекции ListParagraphs. Можно не использовать данное свойство, а прописать нужный номер в скобках.
Теперь давайте рассмотрим такой пример кода на языке VBScript и JScript.
Пример на VBSCRIPT:
' ---------------------------------------------------------------------------- ' Коллекция ListParagraphs и объект ListParagraph ' как в ворде сделать абзац ' ListParagraphs.vbs ' ---------------------------------------------------------------------------- Option Explicit dim oWord, oDoc, oSel, i, oPars, MyText, oRange, REnd, LPars Set oWord = CreateObject("Word.Application") ' Класс Word.Application Set oDoc = oWord.Documents ' Коллекция Documents oDoc.Add() ' Создаем новый документ Set oSel = oWord.Selection ' Класс Selection oWord.Visible = True ' Делаем документ видимым Set oRange = oDoc(1).Range() ' Класс Range MyText = "Коллекция ListParagraphs - абзац в Word" ' Вставляем в документ заданный текст For i=0 to 30 oSel.TypeText MyText & " форматирование данных " & MyText oSel.TypeParagraph ' Вставляем абзац в ворде Next Set oPars = oRange.Paragraphs ' Коллекция Paragraphs REnd = oPars(oPars.Count).Range.End ' Определяем конечную позицию в тексте '---------------------------------------------------------------------------------------- ' Применяем форматирование к выбранным абзацам в Word '---------------------------------------------------------------------------------------- With oRange.ListFormat call LRange(5,10) .ApplyBulletDefault 2 ' форматирование абзацев в word call LRange(15,22) .ApplyBulletDefault 2 End With '---------------------------------------------------------------------------------------- ' Начинаем перебор всех абзацев в ворде ' Форматируем шрифт For Each LPars in oDoc(1).ListParagraphs With LPars.Range.Font .Bold = true .ColorIndex = 5 End With Next ' Форматируем выбранные абзацы-списки With oDoc(1) .ListParagraphs(3).Range.Font.ColorIndex = 4 .ListParagraphs(6).Range.Font.ColorIndex = 3 .ListParagraphs(8).Range.Font.ColorIndex = 2 End With ' форматирование абзацев в ворде ' Процедура определения выбора параграфов Sub LRange(a, b) oRange.SetRange 0, REnd oRange.SetRange oPars(a).Range.Start, oPars(b).Range.End End Sub |
Пример на JSCRIPT:
// ---------------------------------------------------------------------------- // Коллекция ListParagraphs и объект ListParagraph // как в ворде сделать абзац // ListParagraphs.js // ---------------------------------------------------------------------------- var oWord1, oDoc1, oSel1, i, oPars1, MyText1, oRange1, REnd oWord1 = WScript.CreateObject("Word.Application"); // Класс Word.Application oDoc1 = oWord1.Documents; // Коллекция Documents oDoc1.Add(); // Создаем новый документ oSel1 = oWord1.Selection; // Класс Selection oWord1.Visible = true; // Делаем документ видимым oRange1 = oDoc1(1).Range(); // Класс Range MyText1 = "Коллекция ListParagraphs - абзац в Word"; // Вставляем в документ заданный текст for (i=0; i<=30; i++){ oSel1.TypeText(MyText1 + " форматирование данных " + MyText1); oSel1.TypeParagraph(); // Вставляем абзац в ворде } oPars1 = oRange1.Paragraphs; // Коллекция Paragraphs REnd = oPars1(oPars1.Count).Range.End; // Определяем конечную позицию в тексте //---------------------------------------------------------------------------------------- // Применяем форматирование к выбранным абзацам в Word //---------------------------------------------------------------------------------------- with(oRange1.ListFormat){ LRange(5,10); ApplyBulletDefault(2); // форматирование абзацев в word LRange(15,22); ApplyBulletDefault(2); } //---------------------------------------------------------------------------------------- // Начинаем перебор всех абзацев в ворде // Форматируем шрифт for (i=1; i<=oDoc1(1).ListParagraphs.Count; i++){ with(oDoc1(1).ListParagraphs(i).Range.Font){ Bold = true; ColorIndex = 5; } } // Форматируем выбранные абзацы-списки with(oDoc1(1)){ ListParagraphs(3).Range.Font.ColorIndex = 4; ListParagraphs(6).Range.Font.ColorIndex = 3; ListParagraphs(8).Range.Font.ColorIndex = 2; // форматирование абзацев в ворде } // Процедура определения выбора параграфов function LRange(a, b){ oRange1.SetRange(0, REnd); oRange1.SetRange(oPars1(a).Range.Start, oPars1(b).Range.End); } |
В самом начале мы создаем ссылки на нужные объекты и коллекции:
- Set oWord – Тут мы получаем доступ к объекту Word Application, который предоставляет само приложение Word.
- Set oDoc – Данная переменная хранит коллекцию Documents, предоставляющую набор всех документов в приложении Word.
- oDoc.Add() – С помощью метода Add мы добавляем в коллекцию новый документ, с которым и будем работать.
- Set oSel – Формируем ссылку на объект Selection, который позволит вставить в документ нужный текст или форматированный абзац в ворд.
- Set oRange – Класс Range позволит нам выбирать нужный диапазон текста для его обработки.
- Цикл For i=0 to 30 …. Next отвечает за вставку нужно текста в документ, тут же происходит вставка абзаца Word. Весь процесс происходит 30 раз.
- Set oPars – Данная переменная будет хранить доступ к коллекции Paragraphs, предоставляющей все абзацы в текущем документе. Важно отметить, что если создать ссылку до вставки текста, то коллекция будет пустой. Поэтому, мы, сначала вставляем текст, а уже потом получаем доступ к коллекции Paragraphs.
- Переменная REnd нужна для того, что бы определить, максимальное количество знаков во всем документе.
Процедура (функция) LRange принимает два параметра, которые показывают начальный и конечный абзац в ворд, которые надо выбрать. Так, мы сначала выбираем форматированные абзацы в Word с 5 по 10 и делаем их как список. Далее происходит выбор параграфов с 15 по 22 и их форматирование. В итоге, у нас получаются два блока, являющихся абзацами, отформатированными как список.
Далее происходит использование цикла for для перебора все элементов в коллекции ListParagraphs – смотрите «Урок 9 по JScript — оператор цикла for» и «Урок 6 по VBScript: Циклы for…next и for each…next«. В самом цикле мы меняем стиль текста и его цвет. Обратите внимание, что цикл будет обрабатывать только те абзацы в ворде, которые отформатированы как список.
Далее происходит выбор заданного форматированного абзаца в Word, и изменение цвета текста только для него. Результат работы сценария вы можете наблюдать на рисунке выше.