Коллекция Word ListGalleries и объект ListGallery — как сделать список в word

Коллекция Word ListGalleries и объект ListGallery — как сделать список в word Объектная модель Microsoft Word

Доброго времени суток всем подписчикам и читателям блога scriptcoding.ru. Сегодня мы рассмотрим, как сделать список в Word документе программным путем, с помощью коллекции ListGalleries объектной модели Word.

Коллекция ListGalleries является отправной точкой, чтобы сделать маркированный или нумерованный список в Word с помощью макросов VBA, или сценариев сервера Windows Script Host. По сути, коллекция хранит объекты ListGallery, которые представляют индивидуальный список, но, ни ListGalleries и ListGallery не содержат средств для формирования списка Word с нужными параметрами. Так, с практической стороны вам понадобится только одно свойство и один метод из коллекции и два свойства и один метод.

Для доступа к коллекции ListGalleries используется одноименное свойство класса Word.Application. Так как данный материал немного запутан, то давайте для начала рассмотрим свойства и метода коллекции и класса, а уже потом я постараюсь показать и объяснить, что и для чего нужно…

ListGalleries – свойства и методы, маркированный и нумерованный список в Word

создание нумерованного и маркированного списка в word

Count– Количество классов ListGallery в текущей коллекции

Item(index) – Позволяет получить доступ к ListGallery заданного типа.

index – Определяет тип списка в Word, содержит значение константы WdListGalleryType:

  • wdBulletGallery — 1 — маркированный список Word.
  • wdNumberGallery — 2 — нумерованный список Word.
  • wdOutlineNumberGallery — 3 — многоуровневый список.

ListGallery – свойства и методы, нумерованный и маркированный список в Word

создание маркированного и нумерованного списка в Word

ListTemplates— Возвращает ListTemplates, которая представляет все типы списков в Word для указанного списка в коллекции. Только чтение.

Modified(index) – Вернет значение True, если производились изменения в заданном шаблоне списка. Только чтение.

Reset(index) – Позволяет очистить созданный ранее шаблон (index – номер шаблона).

Хорошо, теперь давайте рассмотрим, как сделать список Word, и весь процесс….

Все мы знаем, чтобы сделать список в документе Word, в первую очередь надо выбрать нужные абзацы, после этого мы выбираем типы списков Word. За тип отвечают три вкладки:

  • Маркеры – содержит 7 типов маркеров и позволяет создать собственный список-маркер.
  • Нумерация – также содержит 7 вариантов нумерованного списка в Word и дает возможность создать собственный шаблон.
  • Многоуровневый список – также на выбор дается 7 готовых шаблонов и возможность сформировать собственный.

Аналогичные действия происходят, и тогда, когда надо программно сделать список в Word:

Сначала нам нужно получить доступ к коллекции ListGalleries через одноименное свойство класса Word Application.

Далее нужно получить доступ к ListGallery – мы можем или использовать свойство item (смотрите выше) или задать значение напрямую:

oWord.ListGalleries(1)oWord.ListGalleries.Item(1)

Обратите внимание, что мы передаем не номер класса, а его тип (всего три варианта).

После того, как мы определились с нужным типом списка в Word и получили доступ к ListGallery, нам нужно обратиться к свойству ListTemplates, которое позволяет получить доступ к одноименной коллекция:

oWord.ListGalleries(1).ListTemplates.Item(1)oWord.ListGalleries(1).ListTemplates(1)

Хорошо мы получили доступ к коллекции ListTemplates, давайте рассмотрим, для чего она нужна. Как упоминалось выше, для каждого из трех типов списков Word есть 7 заготовленных шаблонов. Фактически, каждый такой шаблон является классом ListTemplate, входящим в состав коллекции. Как и с объектом ListGallery, тут та же ситуация – мы передаем не номер, а тип.

ListTemplates – свойства и методы, как сделать список в Word

типы Word списков

Count– Количество классов ListTemplate. Только чтение.

Add(OutlineNumbered, Name) — Возвращает ListTemplate, представляющий новый шаблон списка. Оба параметра являются дополнительными.

OutlineNumbered – True — список будет многоуровневым, False — список содержит только один уровень вложенности.

Name – имя шаблона.

Item(count) — Возвращает отдельный объект ListTemplate в коллекции.

ListTemplate – свойства и методы, типы списков в Word

как сделать Word список

ListLevels— Возвращает ListLevels, представляющую все списки для указанного ListTemplate.

Name— Возвращает или задает имя указанного класса. Чтение и запись.

OutlineNumbered— Значение true, если указанный ListTemplate является многоуровневым. Чтение и запись.

Convert(level) – Позволяет конвертировать список: многоуровневый в одноуровневый, или наоборот.

level – Дополнительный параметр, который задает уровень вложенности списка Word. Этот аргумент может быть число от 1 до 9. Если этот аргумент опущен, то значение 1 — значение по умолчанию.

Последний этап, который, показывает как сделать список в Word – этап выбора уровня вложенности. По сути, нам надо получить доступ к коллекции ListLevels и объектам ListLevel. Так как данная коллекция и объект содержат довольно много методов и свойств, то я описал их в отдельной статье – «Коллекция Word ListLevels и объект ListLevel«. Но, чтобы не предоставлять вам материал без примеров, мы сделаем два списка в Word, которые сможем многократно использовать. Я сначала приведу вам примеры кода, а уже потом объясню, что и как.

Пример на языке VBScript

' ----------------------------------------------------------------------------' как сделать список в Word' нумерованный список в Word' маркированный список в Word' ListGallery.vbs' ----------------------------------------------------------------------------OptionExplicit dim oWord, oDoc, oSel, i, oPars, MyText, oRangedim REnd' конец текстаdim List1, List2' два объекта ListTemplate Set oWord = CreateObject("Word.Application")Set oDoc = oWord.DocumentsoDoc.Add()Set oSel = oWord.SelectionoWord.Visible = True MyText = "типы списков в Word. " For i=0 to 10oSel.TypeText MyText & MyText & MyText & MyText & MyText & MyText & MyTextoSel.TypeParagraphNext set oRange = oDoc(1).Range()'Создаем Rangeset oPars = oRange.Paragraphs 'Создаем Paragraps ' Определяем конечную позицию для текстаREnd = oPars(oPars.Count).Range.End set List1 = oDoc(1).ListTemplates.Add(false)' Первый шаблонset List2 = oDoc(1).ListTemplates.Add(false)' Второй шаблон '--------------------------------------------------------------' Заполняем шаблоны'--------------------------------------------------------------With List1.ListLevels(1).Alignment = 1.NumberPosition = 10.NumberStyle = 3.TextPosition = 20.TrailingCharacter = 0With .Font.Bold =true.Size = 20.Shadow = true.ColorIndex = 6EndWithEndWith With List2.ListLevels(1).Alignment = 1.NumberPosition = 20.NumberStyle = 4.TextPosition = 20.TrailingCharacter = 0With .Font.Bold =true.Size = 20.Shadow = true.ColorIndex = 11EndWithEndWith'-------------------------------------------------------------- ' выбираем диапазон от 2-го до 4-го абзацаoRange.SetRange oPars(2).Range.Start, oPars(4).Range.End' Применяем первый шаблон спискаoRange.ListFormat.ApplyListTemplateWithLevel List1, false, 0, 2 ' выделяем заново весь диапазонoRange.SetRange 0, REnd ' выбираем диапазон от 2-го до 4-го абзацаoRange.SetRange oPars(7).Range.Start, oPars(9).Range.End' Применяем второй шаблон спискаoRange.ListFormat.ApplyListTemplateWithLevel List2, false, 0, 2

Пример на языке JScript

// ----------------------------------------------------------------------------// как сделать список в Word// нумерованный список в Word// маркированный список в Word// ListGallery.vbs// ---------------------------------------------------------------------------- var oWord1, oDoc1, oSel1, i, oPars1, MyText1, oRange1;var REnd;// конец текстаvar List1, List2;// два объекта ListTemplate oWord1 = WScript.CreateObject("Word.Application");oDoc1 = oWord1.Documents;oDoc1.Add();oSel1 = oWord1.Selection;oWord1.Visible=true; MyText1 ="типы списков в Word. "; for(i=0; i<=10; i++){oSel1.TypeText(MyText1 + MyText1 + MyText1 + MyText1 + MyText1 + MyText1 + MyText1);oSel1.TypeParagraph();} oRange1 = oDoc1(1).Range();//Создаем RangeoPars1 = oRange1.Paragraphs;//Создаем Paragraps // Определяем конечную позицию для текстаREnd = oPars1(oPars1.Count).Range.End; List1 = oDoc1(1).ListTemplates.Add(false);// Первый шаблонList2 = oDoc1(1).ListTemplates.Add(false);// Второй шаблон //--------------------------------------------------------------// Заполняем шаблоны//--------------------------------------------------------------with(List1.ListLevels(1)){Alignment =1;NumberPosition =10;NumberStyle =3;TextPosition =20;TrailingCharacter =0;with(Font){Bold =true;Size =20;Shadow =true;ColorIndex =6;}} with(List2.ListLevels(1)){Alignment =1;NumberPosition =20;NumberStyle =4;TextPosition =20;TrailingCharacter =0;with(Font){Bold =true;Size =20;Shadow =true;ColorIndex =11;}}//-------------------------------------------------------------- // выбираем диапазон от 2-го до 4-го абзацаoRange1.SetRange(oPars1(2).Range.Start, oPars1(4).Range.End);// Применяем первый шаблон спискаoRange1.ListFormat.ApplyListTemplateWithLevel(List1,false,0,2); // выделяем заново весь диапазонoRange1.SetRange(0, REnd); // выбираем диапазон от 2-го до 4-го абзацаoRange1.SetRange(oPars1(7).Range.Start, oPars1(9).Range.End);// Применяем второй шаблон спискаoRange1.ListFormat.ApplyListTemplateWithLevel(List2,false,0,2);

Хорошо, теперь давайте разберем программный код. В обоих сценариях объявление практически одинаковые переменные, в примере на JS к именам я добавил единицу. oWord – хранит доступ к приложению Ворд: «Объект Word Application — свойства«, oDoc – позволит создать новый документ: «Коллекция Word Documents«, oSel – позволит выделять нужный текст: «Объект Word Selection — выделить весь текст в ворде, свойства«, oPars – отвечает за обработку абзацев: «Объект Word Paragraph и коллекция Paragraphs — основные параметры абзаца«, MyText – собственно, текст для вставки в документ, oRange – отвечает за выбор содержимого: «Объект Word Range — Выбор текста«.

Видим, что в обоих сценариях мы создали два объекта List1 и List2, которые содержат отформатированный список Word. Далее происходит процесс вызова метода ApplyListTemplateWithLevelобъекта ListFormat для заданного выбора, к нему и будет применяться сделанный в список Word. Видим, что основные параметры определяются через свойства объекта ListLevel.

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