Объект Word ListFormat — создание списков в word

Объект Word ListFormat — создание списков в word Объектная модель Microsoft Word

Здравствуйте уважаемые читатели и подписчики блога scriptcoding.ru. В этой статье мы рассмотрим объект ListFormat, который отвечает за создание списков в Word.

По сути, данный объект позволяет применить шаблон заданного MS WORD списка к выбранному диапазону текста или ко всему тексту. Конечно, у класса ListFormat есть еще много других полезных свойств и методов, которые мы рассмотрим. Давайте для начала рассмотрим теоретическую часть этой публикации, а потом приступим к программированию. Мы напишем два примера программного кода на языке VBScript и JScript, которые работают под управлением сервера сценариев Windows Script Host. Параллельно можете почитать статьи по тема: «Многоуровневые списки в Word» и «Маркированные Microsoft Word списки«.

Класс ListFormat – списки в в Word

Свойства – MS Word списки

работа с ms word списками

ListLevelNumber— Возвращает или устанавливает уровень форматирования списка для первого абзаца в указанном ListFormat.

ListString— Возвращает строку, которая представляет внешний вид значения списка первого абзаца в диапазоне для заданого ListFormat.

ListType— Возвращает тип списков, которые содержатся в диапазоне для указанного ListFormat . Значение константы WdListType:

  • wdListNoNumbering — 0 — Список без маркеров, нумерации или уровней.
  • wdListListNumOnly — 1 — LISTNUM поля, которые могут быть использованы в теле абзаца.
  • wdListBullet — 2 — Маркированный список.
  • wdListSimpleNumbering — 3 — Простой числовой Microsoft Word список.
  • wdListOutlineNumbering — 4 – Многоуровневый MS Word список.
  • wdListMixedNumbering — 5 — Смешанный числовой список в Word.
  • wdListPictureBullet — 6 — Маркированный список из картинок.

ListValue— Возвращает числовое значение первого абзаца в диапазоне для указанного ListFormat.

SingleList– Вернет логическое TRUE, если указанный диапазон содержит только один форматированный список.

Методы – Microsoft Word списки

работа с microsoft word списками

ApplyListTemplate(ListTemplate, ContinuePreviousList, ApplyTo, DefaultListBehavior) – Позволяет применить заданный шаблон со списком в Word. Обязательным является только параметр ListTemplate.

ListTemplate – Содержит шаблон.

ContinuePreviousList – True – нумерация продолжается с предыдущего списка Ms Word, false – сформировать список с новой нумерацией.

ApplyTo – Определяет, к чему должен быть применен шаблон. Значение константы WdListApplyTo:

  • wdListApplyToWholeList — 0 — Весь список.
  • wdListApplyToThisPointForward — 1 – С позиции курсора до конца текста.
  • wdListApplyToSelection — 2 — Выбор.

DefaultListBehavior – Содержит значение константы WdDefaultListBehavior:

  • wdWord8ListBehavior — 0 — Использовать форматирование списков совместимое с Microsoft Word 97.
  • wdWord9ListBehavior — 1 — Использовать веб-ориентированное форматирование списков, введенное в Microsoft Word 2000.
  • wdWord10ListBehavior — 2 — Использовать форматирование совместимое с Microsoft Word 2002.

ApplyListTemplateWithLevel(ListTemplate, ContinuePreviousList, ApplyTo, DefaultListBehavior, ApplyLevel) – Позволяет применить заданный шаблон к заданному уровню.

ApplyLevel – Уровень, к которому применяется шаблон.

ApplyBulletDefault(DefaultListBehavior) – Метод добавляем маркированный список Microsoft Word к заданному выбору.

ApplyNumberDefault(DefaultListBehavior) – Методы добавляют нумерованный список (определенный программой по умолчанию) к указанному диапазону.

ApplyOutlineNumberDefault(DefaultListBehavior) – Аналогично предыдущему методу.

CanContinuePreviousList(ListTemplate) – Указывает, можно ли продолжить форматирование из предыдущего списка в Word. Метод возвращает константу WdContinue:

  • wdContinueDisabled — 0 — Форматирование нельзя продолжить.
  • wdResetList — 1 – Нумерацию можно перезапустить.
  • wdContinueList — 2 — Форматирование можно продолжить.

CountNumberedItems() — Возвращает количество маркированных или нумерованных пунктов и для заданного объекта ListFormat .

ListIndent() – Увеличивает уровень.

ListOutdent() – Уменьшает уровень.

RemoveNumbers() — Удаляет нумерацию или маркеры из указанного списка.

По сути, сам класс ListfFormat, как и остальные с аналогичным префиксом, является довольно раздутым, так как большая часть методов и свойств практически не используются, или не представляют практического интереса. Поэтому, я просто приведу два примера программного кода на языке VBScript и JScript, в которых происходит создание документа Word, добавление текста и создание списков в Word с указанным шаблоном, а далее происходит различное форматирование.

Программный код на языке vbscript:

' ----------------------------------------------------------------------------' Списки в Word' List_Format.vbs' ----------------------------------------------------------------------------OptionExplicit dim oWord, oDoc, oSel, oRange, oParsdim LT, REnd, x, i set oWord = WScript.CreateObject("Word.Application")' класс Wordset oDoc = oWord.Documents' Коллекция DocumentsoDoc.Add() ' Создаем новый документset oSel = oWord.Selection' Объект SelectionoWord.Visible = True' Делаем документ видимымset oRange = oDoc(1).Range()' класс Range For i=0 to 40oSel.TypeText "MS Word списки. "oSel.TypeParagraph ' Вставляем абзацNext set oPars = oRange.Paragraphs 'Коллекция Paragraphsset LT = oDoc(1).ListTemplates.Add(true)' Объект Template ' Определяем формат для каждого уровня - Microsoft Word спискиFor x = 1 To 9With LT.ListLevels(x).NumberStyle = 0 ' стиль.NumberPosition = oWord.InchesToPoints(0.25 * (x - 1)).TextPosition = oWord.InchesToPoints(0.25 * x)EndWithNext ' Конечная позиция для текстаREnd = oPars(oPars.Count).Range.End  '-------------------------------------------------------------------------------------' Формирование для разных абзацев '-------------------------------------------------------------------------------------With oRange.ListFormat'создание списков в Word call LRange(1,20) .ApplyListTemplate LT,false, 2, 2 call LRange(2,12) .ListIndent call LRange(4,10) .ListIndent call LRange(6,8) .ListIndent call LRange(14,17) .ApplyListTemplate LT,false, 2, 2 call LRange(22,25) .ApplyBulletDefault 2 call LRange(27,29) .ApplyNumberDefault 2 call LRange(3,4) .ListLevelNumber = 9'-------------------------------------------------------------------------------------  MsgBox .ListString MsgBox .ListTypeEndWith ' Процедура выбора диапазона и вставки уровняSub LRange(a, b)oRange.setRange 0, REndoRange.setRange oPars(a).Range.Start, oPars(b).Range.EndEndSub

Программный код на языке vbscript:

// ----------------------------------------------------------------------------// Списки в Word// List_Format.js// ----------------------------------------------------------------------------var oWord1, oDoc1, oSel1, oRange1, oPars1;var LT, REnd, x, i; oWord1 = WScript.CreateObject("Word.Application");oDoc1 = oWord1.Documents;oDoc1.Add();oSel1 = oWord1.Selection;oWord1.Visible=true;oRange1 = oDoc1(1).Range();  for(i=0; i<=40; i++){oSel1.TypeText("MS Word списки. ");oSel1.TypeParagraph();} oPars1 = oRange1.Paragraphs;LT = oDoc1(1).ListTemplates.Add(true); // Определяем формат для каждого уровня - Microsoft Word спискиfor(x=1; x<=9; x++){with (LT.ListLevels(x)){NumberStyle =0;NumberPosition = oWord1.InchesToPoints(0.25*(x -1));TextPosition = oWord1.InchesToPoints(0.25* x);}} // Конечная позиция для текстаREnd = oPars1(oPars1.Count).Range.End;  //-------------------------------------------------------------------------------------// Формирование для разных абзацев //-------------------------------------------------------------------------------------with (oRange1.ListFormat){ LRange1(1,20); ApplyListTemplate(LT,false,2,2); LRange1(2,12); ListIndent(); LRange1(4,10); ListIndent(); LRange1(6,8); ListIndent(); LRange1(14,17); ApplyListTemplate(LT,false,2,2); LRange1(22,25); ApplyBulletDefault(2); LRange1(27,29); ApplyNumberDefault(2); LRange1(3,4); ListLevelNumber =9;//------------------------------------------------------------------------------------- создание списков в Word WScript.Echo(ListString);WScript.Echo(ListType); }// Процедура выбора диапазонаfunction LRange1(a, b){oRange1.setRange(0, REnd);oRange1.setRange(oPars1(a).Range.Start, oPars1(b).Range.End);}

На первый взгляд, программный код сценариев может показаться запутанным, но все не так страшно. Имена переменных практически одинаковые, использование оператора WITH позволяет экономить программный код, так как не надо писать лишний раз имя классов. Создание списков в Word. Процедура LRange служит для выделения нужных диапазонов текста, ее передаются два параметра, которые определяют начальный и конечный параграф для выбора – смотрите статьи – «Word Paragraphs — работа с абзацами» и «Word Range — Выбор текста«. Также обратите внимание на синтаксис цикла FOR в языке vbscript — «Урок 6 по VBScript: Циклы for…next и for each…next» и jscript — «Урок 9 по JScript — оператор цикла for«.

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