Стиль слова изменяется после применения ApplyListTemplate - PullRequest
2 голосов
/ 21 июля 2011

У меня есть документ Word, содержащий нумерованный список, подобный этому

  1. Элемент 1
  2. Элемент 2
  3. Элемент 3

Стиль списка - «Абзац списка».Левый отступ "List Paragraph" равен 0,5 ". Если мы запустим следующий код для повторного применения стиля" List Paragraph ", левый отступ стиля будет 0,75"

Dim t As ListTemplate
Set t = ActiveDocument.Styles("List Paragraph").ListTemplate
t.ListLevels(1).ResetOnHigher = True
Selection.Range.ListFormat.ApplyListTemplate t, False, wdListApplyToWholeList

. В результатесписок смещен вправо на 0,25 ". Мне интересно, почему метод ApplyListTemplate меняет левый отступ стиля" Абзац списка ".

До и после применения кода описание стиля

"Indent:
Left:  0.5"
Hanging:  0.25", Numbered + Level: 1 + Numbering Style: 1, 2, 3, … + Start at: 1 + Alignment: Left + Aligned at:  0.75" + Indent at:  1", Style: Quick Style, Priority: 35
Based on: Text"

"Indent:
Left:  0.75"
Hanging:  0.25", Outline numbered + Level: 1 + Numbering Style: 1, 2, 3, … + Start at: 1 + Alignment: Left + Aligned at:  0.75" + Indent at:  1", Style: Quick Style, Priority: 35
Based on: Text"

Я обнаружил одинаковое поведение в Office 2003 и 2010

1 Ответ

0 голосов
/ 14 октября 2011

Я не могу проверить ваш точный код, потому что я получаю ошибку времени выполнения 5941, которая говорит: «Запрашиваемый элемент коллекции не существует».

При этом Word имеет тенденцию (для меня в любом случае) «исправить» отступ списка при каждом изменении его форматирования.Вероятно, есть параметр, который говорит Word, чтобы он прекратил «исправление» списков, но я предлагаю просто добавить следующее в конец кода:

With Selection.ParagraphFormat
    .LeftIndent = InchesToPoints(0.75)          ' Left indent
    .RightIndent = InchesToPoints(0)            ' Right indent
    .FirstLineIndent = InchesToPoints(-0.25)    ' First line indent
End With

, что даст вам левый отступ 0,5 "иотступ в 0,25 дюйма (хотя цифры могут выглядеть немного странно).Вам не нужна средняя линия, которая начинается с .RightIndent = , но я подумал, что включу ее в том случае, если вы захотите изменить это тоже.

...