Создание маркированного списка в Ворде

Создание маркированного списка в Ворде Примеры скриптов и макросов для Word и WSH

Доброго времени суток всем подписчикам и читателям блога scriptcoding.ru. Продолжая тему «Как в ворде сделать список», в этой статье мы рассмотрим маркированный список в ворде, процесс его создания ручным и программным способом.

Фактически, частично, данную тему мы рассмотрели в статье «Как создать маркированный список в ворде«. Поэтому, тут мы больше сосредоточимся на программировании. Маркированный список в ворде в большинстве случае нужен тогда, когда надо просто перечислить некоторые свойства или параметры описываемого предмета. Например: значения константы, параметры игры и так далее. Все довольно просто, мы выбираем нужные абзацы и применяем к ним пункт «Маркеры» на панели Word. Там же есть семь готовых маркеров, при желании можно сформировать собственный маркер, который будет содержать заданный символ, размер или цвет. Как сделать список в ворде.

Как в ворде сделать список

Если реализовать аналогичную задачу программным путем чтобы показать как создать список в ворде, то тут надо обращаться к объектной модели Word и ее классам, методам и свойствам. Я приведу примеры кода на языках VBScript и JScript, которые используются сервером сценариев Windows Script Host. По сути, код на языке VBScript будет аналогичным и для языка VBA (макросы), с мелкими изменениями.

Вначале я приведу пример кода для обоих сценариев, а далее дам комментарии к ним.

Как создать список в ворде

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

' ----------------------------------------------------------------------------' Маркированные списки в ворд' spiski_v_word.vbs' ----------------------------------------------------------------------------OptionExplicit dim oWord, oDoc, oSel, i, oPars, MyText, oRangedim MarkerList1, MarkerList2, MarkerList3, REnd Set oWord = CreateObject("Word.Application")Set oDoc = oWord.DocumentsoDoc.Add()Set oSel = oWord.SelectionoWord.Visible = True For i=0 to 22oSel.TypeText "Как создать список в ворд. "oSel.TypeParagraphNext set oRange = oDoc(1).Range() ' Класс Rangeset oPars = oRange.Paragraphs 'Коллекция Paragraps set MarkerList1 = oDoc(1).ListTemplates.Add(false)' Первый шаблонset MarkerList2 = oDoc(1).ListTemplates.Add(false)' Второй шаблонset MarkerList3 = oDoc(1).ListTemplates.Add(false)' Второй шаблон ' Конечная позиция для текстаREnd = oPars(oPars.Count).Range.End  '--------------------------------------------------------------' Заполняем шаблоны'--------------------------------------------------------------With MarkerList1.ListLevels(1).NumberPosition = oWord.InchesToPoints(0).TextPosition = oWord.InchesToPoints(0.25).TrailingCharacter = 0.NumberFormat = chr(74).Font.ColorIndex = 6.Font.Name = "Wingdings".Font.Bold = trueEndWith With MarkerList2.ListLevels(1).NumberPosition = oWord.InchesToPoints(0).TextPosition = oWord.InchesToPoints(0.25).TrailingCharacter = 0.NumberFormat = chr(75).Font.ColorIndex = 11.Font.Name = "Wingdings".Font.Bold = trueEndWith With MarkerList3.ListLevels(1).NumberPosition = oWord.InchesToPoints(0).TextPosition = oWord.InchesToPoints(0.25).TrailingCharacter = 0.NumberFormat = chr(76).Font.ColorIndex = 12.Font.Name = "Wingdings".Font.Bold = trueEndWith'-------------------------------------------------------------- callLList '--------------------------------------------------------------' Изменяем шаблон'--------------------------------------------------------------With oWord.ListGalleries(1).ListTemplates(3).ListLevels(1).NumberPosition = oWord.InchesToPoints(0.5).TextPosition = oWord.InchesToPoints(0.5).NumberStyle = 23.TrailingCharacter = 0.NumberFormat = chr(79)With .Font.Bold =true.Size = 15.Shadow = true.ColorIndex = 5EndWithEndWith'-------------------------------------------------------------- With oRange.ListFormat call LRange(10,11) .ApplyListTemplateWithLevel MarkerList1, false, 0, 2 call LRange(13,14) .ApplyListTemplateWithLevel MarkerList2, false, 0, 2 call LRange(16,17) .ApplyListTemplateWithLevel MarkerList3, false, 0, 2 call LRange(19,20) .ApplyListTemplateWithLevel oWord.ListGalleries(1).ListTemplates(3), false, 0, 2EndWith' как в ворд сделать списокSub LList()dim jj = 1for i = 1 to 7call LRange(j,j+1)oRange.ListFormat.ApplyListTemplateWithLevel oWord.ListGalleries(1).ListTemplates(i), false, 0, 2j = j + 1nextEndSub Sub LRange(a, b)oRange.setRange 0, REndoRange.setRange oPars(a).Range.Start, oPars(b).Range.EndEndSub

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

// ----------------------------------------------------------------------------// Маркированные списки в ворд// spiski_v_word.vbs// ----------------------------------------------------------------------------var oWord1, oDoc1, oSel1, i, oPars1, MyText, oRange1;var MarkerList1, MarkerList2, MarkerList3, REnd oWord1 = WScript.CreateObject("Word.Application");oDoc1 = oWord1.Documents;oDoc1.Add();oSel1 = oWord1.Selection;oWord1.Visible=true; for(i=0; i<=22; i++){oSel1.TypeText("Как создать список в ворд. ");oSel1.TypeParagraph();} oRange1 = oDoc1(1).Range();//Класс RangeoPars1 = oRange1.Paragraphs;//Коллекция Paragraps MarkerList1 = oDoc1(1).ListTemplates.Add(false);// Первый шаблонMarkerList2 = oDoc1(1).ListTemplates.Add(false);// Второй шаблонMarkerList3 = oDoc1(1).ListTemplates.Add(false);// Второй шаблон // Конечная позиция для текстаREnd = oPars1(oPars1.Count).Range.End;  //WScript.Echo(String.fromCharCode(74)); //--------------------------------------------------------------// Заполняем шаблоны//--------------------------------------------------------------with(MarkerList1.ListLevels(1)){NumberPosition = oWord1.InchesToPoints(0);TextPosition = oWord1.InchesToPoints(0.25);TrailingCharacter =0;NumberFormat =String.fromCharCode(74);Font.ColorIndex=6;Font.Name="Wingdings";Font.Bold=true;} with(MarkerList2.ListLevels(1)){NumberPosition = oWord1.InchesToPoints(0);TextPosition = oWord1.InchesToPoints(0.25);TrailingCharacter =0;NumberFormat =String.fromCharCode(75);Font.ColorIndex=11;Font.Name="Wingdings";Font.Bold=true;} with(MarkerList3.ListLevels(1)){NumberPosition = oWord1.InchesToPoints(0);TextPosition = oWord1.InchesToPoints(0.25);TrailingCharacter =0;NumberFormat =String.fromCharCode(76);Font.ColorIndex=12;Font.Name="Wingdings";Font.Bold=true;}//-------------------------------------------------------------- LList() //--------------------------------------------------------------// Изменяем шаблон//--------------------------------------------------------------with(oWord1.ListGalleries(1).ListTemplates(3).ListLevels(1)){NumberPosition = oWord1.InchesToPoints(0.5);TextPosition = oWord1.InchesToPoints(0.5);NumberStyle =23;TrailingCharacter =0;NumberFormat =String.fromCharCode(79);with(Font){Bold =true;Size =15;Shadow =true;ColorIndex =5;}}//-------------------------------------------------------------- with(oRange1.ListFormat){ LRange(10,11); ApplyListTemplateWithLevel(MarkerList1,false,0,2); LRange(13,14); ApplyListTemplateWithLevel(MarkerList2,false,0,2); LRange(16,17); ApplyListTemplateWithLevel(MarkerList3,false,0,2); LRange(19,20); ApplyListTemplateWithLevel(oWord1.ListGalleries(1).ListTemplates(3),false,0,2);}// как в ворд сделать списокfunction LList(){var j=1;for(i=1; i<=7; i++){LRange(j,j+1);oRange1.ListFormat.ApplyListTemplateWithLevel(oWord1.ListGalleries(1).ListTemplates(i),false,0,2);j++;}} function LRange(a, b){oRange1.setRange(0, REnd);oRange1.setRange(oPars1(a).Range.Start, oPars1(b).Range.End);}

Разбираем коды – маркированный список в ворде

как создать в ворде список

Программный код создает новый документ Word и добавляет в него строку текста 20 раз, метод TypeParagraph объекта Selection вставляет абзац. Далее происходит создание трех переменных (MarkerList1, MarkerList2 и MarkerList3), которые будут содержать класс ListTemplate, являющийся шаблоном списка. После происходит заполнение каждого шаблона с помощью свойств объекта ListLevels:

NumberPosition и TextPosition задают отступы в пунктах, что не очень эффективно, поэтому используется функция InchesToPoints, которая преобразует число дюймов в число пунктов (1 дюйм равен 2,54 см). Как в ворде сделать список.

NumberFormat позволяет задать символ, который будет отображаться в качестве маркера. Обратите внимание, что мы использовали разные функции (chr для VBScript и fromCharCode для JScript) для получения символа по его коду. Если вы будете писать макрос, то вам придется использовать функцию ChrW языка VBA.

.Font.Name позволяет задать имя шрифта для задаваемого символа. Имя шрифта можно легко узнать, если открыть меню Символ документа Word, для каждого выбранного символа отображается имя используемого шрифта.

маркированные списки в ворд

Далее происходит вызов процедуры LList, которая позволяет применить маркированный список в ворде к документу. В самой процедуре происходит вызов метода ApplyListTemplateWithLevel объекта ListFormat и вызов процедуры LRange, которая отвечает за выбор заданных абзацев. Как сделать списки в ворд.

После происходит изменение шаблона маркированного списка в ворд:

With oWord.ListGalleries(1).ListTemplates(3).ListLevels(1)……..EndWith

Теперь, любой вызов данного шаблона приведет к формированию не стандартного маркированного списка в ворде, а измененного – мы изменили цвет, размер и стиль маркера.

Далее следует вызов процедуры LRange и применение созданного ранее шаблона списка.

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