Объект Word ListParagraph и коллекция ListParagraphs — форматированные абзацы в ворде

Объект Word ListParagraph и коллекция ListParagraphs — форматированные абзацы в ворде Объектная модель Microsoft Word

Всем привет, с вами автор блога 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' ----------------------------------------------------------------------------OptionExplicit dim oWord, oDoc, oSel, i, oPars, MyText, oRange, REnd, LPars Set oWord = CreateObject("Word.Application") ' Класс Word.ApplicationSet oDoc = oWord.Documents ' Коллекция DocumentsoDoc.Add() ' Создаем новый документSet oSel = oWord.Selection ' Класс SelectionoWord.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 ' форматирование абзацев в wordcall LRange(15,22) .ApplyBulletDefault 2EndWith'---------------------------------------------------------------------------------------- ' Начинаем перебор всех абзацев в ворде' Форматируем шрифтForEach LPars in oDoc(1).ListParagraphs With LPars.Range.Font.Bold = true.ColorIndex = 5 EndWithNext ' Форматируем выбранные абзацы-спискиWith oDoc(1) .ListParagraphs(3).Range.Font.ColorIndex = 4 .ListParagraphs(6).Range.Font.ColorIndex = 3 .ListParagraphs(8).Range.Font.ColorIndex = 2EndWith' форматирование абзацев в ворде ' Процедура определения выбора параграфовSub LRange(a, b) oRange.SetRange 0, REnd oRange.SetRange oPars(a).Range.Start, oPars(b).Range.EndEndSub
как в ворде сделать абзац

Пример на JSCRIPT:

// ----------------------------------------------------------------------------// Коллекция ListParagraphs и объект ListParagraph// как в ворде сделать абзац// ListParagraphs.js// ----------------------------------------------------------------------------var oWord1, oDoc1, oSel1, i, oPars1, MyText1, oRange1, REnd oWord1 = WScript.CreateObject("Word.Application");// Класс Word.ApplicationoDoc1 = oWord1.Documents;// Коллекция DocumentsoDoc1.Add();// Создаем новый документoSel1 = oWord1.Selection;// Класс SelectionoWord1.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;// Коллекция ParagraphsREnd = 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, и изменение цвета текста только для него. Результат работы сценария вы можете наблюдать на рисунке выше.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий