Статьи из блога

Как начать новый раздел с нечетной страницы

К заметке "Поиск заголовков и вставка разрывов страниц перед ними" некоторые пользователи оставили абсолютно справедливые комментарии, что при выборе определенного стиля, например, "Заголовок 1", можно в его настройках определить вставку разрыва страницы перед текстом, оформленным данным стилем. И нечего "огород городить" с помощью макроса.
Полностью согласен.
Но мне поступил новый вопрос на почти аналогичную тему от пользователя Валерия. Он спрашивал:



В документе есть разделы, которые начинаются с новой страницы при выборе Heading 1. Иногда они попадают на четные страницы. Как сделать так, чтобы при выборе Heading 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
twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Оставьте комментарий!

(обязательно)

^ Наверх