Форум по VBA, Excel и Word

Word => Макросы в Word => Тема начата: Alexey Dymov от 24 ноября 2018, 16:23

Название: Word VBA Макросы: Можно ли на автоматически использовать команду 'Разделить список' на всех пунктах списка выделенного фрагмента?
Отправлено: Alexey Dymov от 24 ноября 2018, 16:23
Интересует использование команды 'Разделить список' с помощью макроса только у списков в выбранном фрагменте текста.
Команда 'Разделить список' запускается из контекстного меню. Контекстное меню запускается щелчком правой мыши по маркеру списка или просто внутри пункта списка.
Команда 'Разделить список' есть у маркированных списков. Но в официальной справке ещё упоминается нумерованный список, но для нумерованного списка в контекстном меню нет пункта 'Разделить список'.
Название: Re: Word VBA Макросы: Можно ли на автоматически использовать команду 'Разделить список' на всех пунктах списка выделенного фрагмента?
Отправлено: Администратор от 24 ноября 2018, 23:18
Макрос
Sub Макрос()

    Dim ListPars As ListParagraphs, i As Long
   
   
    '1. Отключение монитора. Может быть это ускорит макрос и чтобы не мерцало.
    Application.ScreenUpdating = False
   
    '2. Запоминаем выделенные пункты списка, чтобы потом не обращаться к объекту 'Select',
        ' т.к. метод 'SeparateList' будет изменять выделение.
    Set ListPars = Selection.Range.ListParagraphs
   
    '3. Включение перехватчика ошибок. Ошибка будет в этих случаях:
        '1) если перед пунктом списка нет пункат списка;
        '2) если пункт уже отделён.
    On Error Resume Next
   
    '4. Отделение каждого пункта в отдельный список.
    ' Двигаемся по всем пунктам списка в выделенном фрагменте.
        ' Используется цикл с 'i', т.к. 'For Each' двигается в непредсказуемом
        ' направлении, а не сверху вниз по пунктам.
    For i = 1 To ListPars.Count
        ' Отделение пункта от вышестоящего.
        ListPars(i).SeparateList
    Next i
   
    '5. Включение перехватчика ошибок.
    On Error GoTo 0
   
    '6. Включение монитора.
    Application.ScreenUpdating = True
   
End Sub
[свернуть]
Название: Re: Word VBA Макросы: Можно ли на автоматически использовать команду 'Разделить список' на всех пунктах списка выделенного фрагмента?
Отправлено: Alexey Dymov от 24 ноября 2018, 23:45
Спасибо.