1

Тема: Нумерованный список абзацев и сортировка абзацев в алф. порядке

Добрый день. Подскажите пожалуйста, как средствами VBA в Ворде сделать нумерованный список абзацев и отсортировать абзацы в алфавитном порядке.
Число нумерации должно быть оформлен оформлено обычным текстом и отделено от абзаца как-нибудь знаком, например латинской Z.

1) То есть, допустим, имеем:

Спартак
Зенит
Торпедо
Динамо

2) Нужно пронумеровать:

1ZСпартак
2ZЗенит
3ZТорпедо
4ZДинамо

3) Произвести сортировку в алфавитном порядке по абзацу после Z:

4ZДинамо
2ZЗенит
1ZСпартак
3ZТорпедо

2

Re: Нумерованный список абзацев и сортировка абзацев в алф. порядке

Код работает с выделенным диапазоном.
В результате выполнения кода получится отсортированный текст, в котором номера отделены от текста знаками табуляции, а не буквой Z. Если очень надо, то поиском и заменой замените знаки табуляции на нужный символ

Sub Сортировка1()
'
'
    With Selection
'    Создаем нумерованный список
    With ListGalleries(wdNumberGallery).ListTemplates(1).ListLevels(1)
        .NumberFormat = "%1."
        .TrailingCharacter = wdTrailingTab
        .NumberStyle = wdListNumberStyleArabic
        .ResetOnHigher = 0
        .StartAt = 1
    End With
    ListGalleries(wdNumberGallery).ListTemplates(1).Name = ""
    Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:= _
        ListGalleries(wdNumberGallery).ListTemplates(1), ContinuePreviousList:= _
        False, ApplyTo:=wdListApplyToSelection, DefaultListBehavior:= _
        wdWord10ListBehavior
        ActiveDocument.ConvertNumbersToText ' преобразуем список в текст
    .ConvertToTable Separator:=wdSeparateByTabs ' преобразуем текст в таблицу
' производим сортировку по второму столбцу таблицы
    .Sort ExcludeHeader:=False, FieldNumber:="столбцам 2", _
        SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _
        FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _
        wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _
        wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _
        wdSortSeparateByCommas, SortColumn:=False, CaseSensitive:=False, _
        LanguageID:=wdRussian, SubFieldNumber:="абзацам", SubFieldNumber2:= _
        "абзацам", SubFieldNumber3:="абзацам"
'        преобразуем таблицу в текст
    Selection.Rows.ConvertToText Separator:=wdSeparateByTabs, NestedTables:= _
        True
    End With
End Sub