Статьи из блога
Как начать новый раздел с нечетной страницы
К заметке "Поиск заголовков и вставка разрывов страниц перед ними" некоторые пользователи оставили абсолютно справедливые комментарии, что при выборе определенного стиля, например, "Заголовок 1", можно в его настройках определить вставку разрыва страницы перед текстом, оформленным данным стилем. И нечего "огород городить" с помощью макроса.
Полностью согласен.
Но мне поступил новый вопрос на почти аналогичную тему от пользователя Валерия. Он спрашивал:
Я снова подумал о макросе и у меня получился следующий вариант (если кто-то знает способ проще, прошу сообщить в комментариях).
Поскольку в настройках нет возможности установить начало стиля заголовка именно с нечетной страницы - только с новой страницы - то я и решил использовать макрос.
Если в документе есть разделы, то могут появиться пустые разделы (без текста). В этом случае я рекомендую удалить все разделы, применить макрос и потом вручную добавить нужные разделы (ну, не совершенный макрос, что поделаешь...).
1 2 3 | Sub insBreakOddPage() 'Поиск стиля "Заголовок 1" и перенос заголовков на нечетные страницы 'Если в документе есть разрывы (разделы), то они предварительно удаляются (закомментировано)<br>Dim i As Long<br>Dim n As Long<br>Dim ST As Style<br>Dim oSec As Section<br>Dim myRange As Range<br><br>'For Each oSec In ActiveDocument.Sections<br>' Set myRange = oSec.Range<br>' myRange.Collapse wdCollapseEnd<br>' myRange.MoveEnd Unit:=wdCharacter, Count:=-1<br>' myRange.Delete<br>'Next<br><br>Set ST = ActiveDocument.Styles("Заголовок 1")<br>Selection.HomeKey Unit:=wdStory 'переходим в начало документа<br><br>With Selection.Find<br> .ClearFormatting<br> .Replacement.ClearFormatting<br> .Forward = True<br> .Wrap = wdFindContinue<br> .Text = ""<br> .Style = ST<br> 'Запускаем цикл поиска<br> Do While .Execute<br> If Selection.Style = ST Then<br> i = i + 1<br> If i = 1 Then<br> Selection.GoTo What:=wdGoToHeading, Which:=wdGoToNext<br> Else<br> Selection.Collapse wdCollapseStart<br> n = n + 1 'считаем найденные заголовки<br> Selection.InsertBreak Type:=wdSectionBreakOddPage<br> Selection.Move wdParagraph, 1<br> End If<br> Else<br> Selection.GoTo What:=wdGoToHeading, Which:=wdGoToNext<br> End If<br> Loop<br>End With<br><br>MsgBox "Закончено." & vbCr & "Выполнено для " & n & " заголовков"<br>End Sub |
Метки: макросы | поиск и замена | разделы | разрывы | стили | форматирование
Просмотров: 18284
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Word 97. Слияние документов как один из способов упростить свою работу
- Абзац с цветным фоном
- Автозаполняемые колонтитулы
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Автоформат документов
- Белый текст на синем фоне в Word 2007
- Буквица
- Быстрая смена ориентации страниц документа
- Быстрое изменение стиля форматирования текста
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрое удаление границ у таблицы
- Быстрый ввод текста с помощью команды =rand()
Оставьте комментарий!