Подскажите, как автоматом во всем документе установить нужную позицию табуляции во всех видах списков (и нумерованных, и маркированных). Причем у цифр от 1 до 9 она должна быть одна, у цифр от 10 до 99 другая и от 100 до 999 третья (чтобы одинаковый отступ текста от цифр был).
У меня в примере от цифр от 1 до 9 табуляция 1,75, а от цифр от 10 до 12 - 2,02.
[вложение удалено администратором]
Могу предложить такой вариант. В нём не вставляется табуляция, а происходит изменение структуры списков - символ "Табуляция" заменяется на пробел. При этом текст от номера всегда будет на расстоянии пробела.
Обратите внимание, что у первого списка отображаются номера второго уровня. Чтобы это увидеть: щёлкните правой кнопкой мыши по номеру - Изменить отступы в списке... - появится диалог, в котором видно, что число "1" относится ко второму уровню.
То есть в файле какой-то сбой со списками.
Макрос
Sub Макрос1()
Dim par As Paragraph, lstlevel As ListLevel, i As Long
'1. Отключение монитора.
Application.ScreenUpdating = False
'2. Удаление табуляторов с линейки.
For i = 1 To ActiveDocument.ListParagraphs.Count Step 1
ActiveDocument.ListParagraphs(i).TabStops.ClearAll
Next i
'3. Замена символов "Табуляция" на пробелы.
For i = 1 To ActiveDocument.Lists.Count Step 1
' Vba-именование первого абзаца-списка.
Set par = ActiveDocument.Lists(i).ListParagraphs(1)
' Цикл по всем уровням списка.
For Each lstlevel In par.Range.ListFormat.ListTemplate.ListLevels
' Проверка, есть ли пробел после номера.
If lstlevel.TrailingCharacter <> wdTrailingSpace Then
' Установка пробела в шаблоне списка.
lstlevel.TrailingCharacter = wdTrailingSpace
End If
' Установка отступов.
lstlevel.NumberPosition = CentimetersToPoints(1.25)
lstlevel.TextPosition = CentimetersToPoints(0)
Next lstlevel
Next i
'4. Включение монитора.
Application.ScreenUpdating = True
'5. Сообщение.
MsgBox "Готово.", vbInformation
End Sub
ПримечаниеВ ворде есть понятие "список". Он создаётся так: вкладка Главная - группа Абзац - и здесь три кнопки.
Такие списки не путайте с обычным текстом в виде списка, когда спереди абзаца от руки напечатано тире. Данный макрос не считает этот текст списком, т.к. у меня макрос работает со списками.
Для работы с псевдосписками нужно делать уже что-то другое.