Объект 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
' ----------------------------------------------------------------------------
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, и изменение цвета текста только для него. Результат работы сценария вы можете наблюдать на рисунке выше.

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