Конвертировать Bulletpoints в Listitems в Word - PullRequest
0 голосов
/ 17 октября 2019

В моем word-doc есть автоматически импортируемые списки, похожие на следующие:

- Listitem one
- Listitem two
- Listitem three
- ...

Это только параграфы, начинающиеся с тире '-'. Поэтому я пытаюсь преобразовать их в списки:

Selection.WholeStory
Selection.MoveLeft Unit:=wdCharacter, count:=1

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Style = ActiveDocument.Styles("Aufzählungszeichen")

         With Selection.Find
             .Text = "^p- "
             .Replacement.Text = "^p "
             .Forward = True
             .Wrap = wdFindStop
             .Format = True
             .MatchCase = False
             .MatchWholeWord = False
             .MatchWildcards = False
             .MatchSoundsLike = False
             .MatchAllWordForms = False
         End With

Selection.Find.Execute Replace:=wdReplaceAll

Однако это приводит к тому, что списки оформляются только как списки, но не ведут себя как настоящие списки в слове. Как я могу заменить абзацы (начиная с ^ p-) реальными элементами списка через макрос?

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Word на самом деле имеет встроенную функцию, которая может преобразовывать текстовые списки в списки. В последние годы он исчез из пользовательского интерфейса, но по-прежнему доступен в списке «Команды, отсутствующие на ленте» и в объектной модели. Это называется AutoFormat. Их можно добавить на ленту или в QAT или использовать с кодом.

Например, выберите список, затем

Selection.Range.AutoFormat

или, чтобы использовать функциональные возможности пользовательского интерфейса (который покажет интерактивное диалоговое окно, обеспечивающее более точное управление):

Application.CommandBars.ExecuteMso("AutoFormat")

Тамэто также настройки параметров для управления тем, что делает Автоформат

Application.CommandBars.ExecuteMso("AutoFormatOptions")

Также возможно применить стиль, используя Find / Replace, но важно, чтобы стиль был связан со списком . Создайте новый стиль, если у вас его еще нет, затем ...

Перейдите к элементу управления Multilevel list на ленте и выберите Define new list style. Присвойте имя, нажмите Format, выберите Numbering и определите свойства списка (назначьте символ маркера из Number style for this level). Нажмите кнопку More и из Link level to style выберите имя стиля, которое следует использовать.

Теперь, когда вы запускаете код поиска / замены в вопросе, используя имя стиля (не имя стиля списка) следует применять список, а также форматирование стилей.

Если у вас возникнут проблемы с определением пары стилей, лучше всего спросить об этом в месте конечного пользователя, например, Super User.

0 голосов
/ 17 октября 2019

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

Чтобы прояснить это различие, вот статья Шона Келли о создании списков нумерации: Как создать нумерованные заголовки или нумерацию контуров в Word В своей статье «Заголовки» - это стиль списка, используемый для организации подстилей. Если вы создали стиль списка с помощью этой статьи, вы бы применили стиль заголовка 1, заголовок 2 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...