1

Тема: макрос для создания списков

Прошу помочь создать макрос, автоматизирующий работу со списками.

Работаю в word 2000 (на работе) и 2003 (дома).
Что я делаю без макроса.
Имеется многоуровневый список, в моем случае я использую три уровня.
Из элементов данного списка формируется оглавление (но думаю в моей проблеме - это не принципиально).
Мой третий уровень списка имеет стиль "Заголовок 3 +".
Когда мне нужно начать очередной блок текста, заголовком которого является элемент списка 3-го уровня, то я перемещаюсь назад по тексту документа к предыдущему номеру списка, выделяю этот элемент списка, копирую его формат, вновь возвращаюсь к концу текста, и этот скопированный формат накладываю на нужный абзац. И получаю нужный заголовок (=элемент списка) с продолжением нумерации.

Попытка записать все эти действия в макрос у меня не получается, так как ни выделение мышью текста с нужным форматом, ни копирование формата, ни выделение нового абзаца мышью, всё это в при записи макроса не работает.

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

В итоге я вижу два варианта решения (но не знаю как их реализовать):
1. Как-то нужный мне формат элемента списка прописать в тексте макроса, а при выполнении макроса нужный абзац будет отформатирован нужным образом.
2. Макрос будет создавать следующий по номеру элемент списка 3-го уровня.
Прим. При этом в тексте существуют же несколько разных списков, то есть макрос должен как-то понимать, с каким списком я работаю.

Прошу помочь автоматизировать мне эту процедуру, т.к. заголовков 3-го уровня довольно много, и форматирование мышью превращается в скучную рутину.

С уважением, Владимир.

2

Re: макрос для создания списков

Копировать формат можно с помощью комбинации клавиш CTRL+SHIFT+C а применить форматирование к выделенному фрагменту CTRL+SHIFT+V. Причем применение данных комбинаций можно записать в макрос. Ну или сделать применение формата один раз, а потом нажимать F4 для повтора последнего действия  (то есть применение формата к выделенному образцу).
Скопируйте формат в буфер обмена. А в макросе запишите только выполнение вставки формата. Потом же применяйте данный макрос к нужным вам абзацам.
Думаю, что применение данных сочетаний клавиш вам должно помочь!

Отредактировано andrkar (16.06.2010 19:31:31)

3

Re: макрос для создания списков

Эту задачку нужно решать следующим образом. (Нужно использовать не макросы, а стандартные возможности.)
Создаем соответствующий стиль.
При создании/изменении стиля выбираем (помимо остальных нужных нам элементов стиля) формат->нумерация.
Это нам позволяет связать определенный стиль с определенным уровнем многоуровневого списка. (Для каждого нужного нам уровня мы создаем отдельный стиль.)
Далее. В меню выбираем сервис->настройки->команды, в окошке "категории" выбираем "стили", и из окошка "команды" выносим наш новый стиль/стили на панель.
Теперь ставим курсор на нужный абзац, жмем на созданную кнопку, и, вуаля, абзац становится соответствующим элементом соответствующего уровня списка.

Всё, тему можно закрывать.


P.S. Спасибо andrkar за совет. Это помогло мне вспомнить, как копировать формат средствами VBA. Я не профессиональный программист, но иногда хочется как-то автоматизировать рутинные операции.

Отредактировано vpkiabn (21.06.2010 23:13:39)

4

Re: макрос для создания списков

Аналогичную панель создает и пакет макросов "Перестройка". Там сразу создается панель, включающая все стили в документе, то есть не нужно каждый из них переносить на панель, а просто удалить ненужные, а оставшиеся упорядочить. Пользуюсь уже лет шесть:) Просто изначально не смог понять, о чем вы задавали вопрос.
Хотя то, что вы написали как решение, и изначальный вопрос - как-то совсем не очень бьются по смысл, во всяком случае я близкой связи между ними не уловил... sad

Отредактировано andrkar (21.06.2010 23:18:49)

5

Re: макрос для создания списков

andrkar пишет:

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

Видимо, я плохо сформулировал конечную цель.