Новости:

Форум на данный момент в стадии обновления. Если у Вас возникли проблемы со входом в свою учетную запись - просьба писать на email: info@excel-vba.ru

Главное меню

Выправление порядка пунктов в списках

Автор Vatrushka, 22.04.2014, 09:30:24

« назад - далее »

Vatrushka

Доброе утро!

Столкнулся с такой проблемой: Microsoft Word делает сквозную нумерацию пунктов в списках, если вставлять новые куски текста со своими списками в уже существующий текст.

Необходимо сделать так, чтобы все списки начинались со своего первого значения ( "1)" ).

Написал макрос, который задаёт команду "начать заново с 1" для каждого параграфа, написанного в стиле списка ("е) Список-цифры"), но он почему-то не работает:

Sub bb1()
Dim p As Paragraph
For Each p In ActiveDocument.Paragraphs
    If p.Style Like "е) Список-цифры" Then
         With p.Range
         With ListGalleries(wdNumberGallery).ListTemplates(1).ListLevels(1)
        .NumberFormat = "%1)"
        .TrailingCharacter = wdTrailingTab
        .NumberStyle = wdListNumberStyleArabic
        .NumberPosition = CentimetersToPoints(1.25)
        .Alignment = wdListLevelAlignLeft
        .TextPosition = CentimetersToPoints(1.89)
        .TabPosition = wdUndefined
        .ResetOnHigher = 0
        .StartAt = 1
        With .Font
            .Bold = False
            .Italic = False
            .StrikeThrough = False
            .Subscript = False
            .Superscript = False
            .Shadow = False
            .Outline = False
            .Emboss = False
            .Engrave = False
            .AllCaps = False
            .Hidden = False
            .Underline = wdUnderlineNone
            .Color = wdUndefined
            .Size = wdUndefined
            .Animation = wdUndefined
            .DoubleStrikeThrough = False
            .Name = ""
        End With
        .LinkedStyle = "е) Список-цифры"
    End With
    ListGalleries(wdNumberGallery).ListTemplates(1).Name = ""
    Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:= _
        ListGalleries(wdNumberGallery).ListTemplates(1), ContinuePreviousList:= _
        False, ApplyTo:=wdListApplyToWholeList, DefaultListBehavior:= _
        wdWord10ListBehavior
       End With
      End If
Next
End Sub



Думаю, он считает каждый пункт списка новым парафом и пускает команду "начать заново с 1" на каждом пункте, а нужно, чтобы он это делал один раз для каждого списка.

Не могли бы Вы подсказать, как можно реализовать подобную задачу? Буду Вам очень благодарен!

Прикладываю исходный файл (Исходный текст) и тот, который нужно получить (Конечный текст).

Яндекс.Метрика Рейтинг@Mail.ru