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

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

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

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

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

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

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

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

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

' ----------------------------------------------------------------------------
' Маркированные списки в ворд
' spiski_v_word.vbs
' ----------------------------------------------------------------------------
Option Explicit
 
dim oWord, oDoc, oSel, i, oPars, MyText, oRange
dim MarkerList1, MarkerList2, MarkerList3, REnd
 
Set oWord = CreateObject("Word.Application")
Set oDoc = oWord.Documents
oDoc.Add()
Set oSel = oWord.Selection
oWord.Visible = True
 
For i=0 to 22
    oSel.TypeText "Как создать список в ворд. "
    oSel.TypeParagraph
Next
 
set oRange = oDoc(1).Range()               ' Класс Range
set 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 = true
End With
 
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 = true
End With
 
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 = true
End With
'--------------------------------------------------------------
 
call  LList
 
'--------------------------------------------------------------
'     Изменяем шаблон
'--------------------------------------------------------------
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 = 5
        End With
End With
'--------------------------------------------------------------
 
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, 2
End With
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ' как в ворд сделать список
Sub LList()
    dim j
    j = 1
    for i = 1 to 7
        call LRange(j,j+1)
        oRange.ListFormat.ApplyListTemplateWithLevel oWord.ListGalleries(1).ListTemplates(i), false, 0, 2
        j = j + 1
    next
End Sub
 
Sub LRange(a, b)
    oRange.setRange 0, REnd
    oRange.setRange oPars(a).Range.Start, oPars(b).Range.End
End Sub

Программный код на языке 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();            //Класс Range
oPars1 = 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 и применение созданного ранее шаблона списка.

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