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

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

Быстрая смена ориентации страниц документа

Стандартно смена ориентации страниц документа (книжная или альбомная) происходит через диалоговое окно Параметры страницы, вызываемое по одноименной команде из меню Файл (Word 2003) или через вкладку Разметка страницы (Word 2007).

 

Можно ускорить действия по смене ориентации страниц, если воспользоваться небольшим макросом:

Sub orientPage()
With ActiveDocument.PageSetup
   If .Orientation <> wdOrientPortrait Then
      .Orientation = wdOrientPortrait
   Else
      .Orientation = wdOrientLandscape
   End If
End With
End Sub

Этот макрос изменяет ориентацию всех страниц в текущем документе.

 

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

Sub orient()
Dim myRange As Range
Set myRange = ActiveDocument.Range(Start:=Selection.End, End:=Selection.End)
myRange.InsertBreak Type:=wdSectionBreakNextPage
Set myRange = Nothing
Set myRange = ActiveDocument.Range(Start:=Selection.Start, End:=Selection.Start)
myRange.InsertBreak Type:=wdSectionBreakNextPage
myRange.PageSetup.Orientation = wdOrientLandscape
Set myRange = Nothing
End Sub

 

Чтобы корректно изменить ориентацию, выделите текст или таблицу и выполните этот макрос.

]]> twitter.com facebook Вконтакте Google Buzz google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru]]>


Понравилась статья, проголосуй:



Комментариев: 24

  1. User
    04.09.2007 в 13:50 | #1

    Некоторое уточнение по использованию второго макроса. Смена ориентации страницы производиться на всех страницах в текущем разделе. Если требуется поменять только на одной странице (или нескольких подряд) из общего масcива страниц, то предварительно необходимо выделить эту страницу в отдельный раздел.

  2. 04.09.2007 в 18:26 | #2

    User, вы правы. Я тестировал и проверял до того как написать этот пост. Видимо, я упустил этот момент когда сам вставлял разрыв. В этом случае можно написать дополнительный код в макрос.

  3. 05.09.2007 в 12:17 | #3

    Подправлен макрос (точнее переписан).

  4. User
    05.09.2007 в 20:57 | #4

    Антон, спасибо, сейчас второй макрос нормально решает задачу.

  5. Klinton
    04.03.2008 в 15:46 | #5

    Может вопрос и гдупый, но я чего-то не могу понять. Раньше пользовался Word2003, недавно установил Word2007, и надо изменить ориентацию одной страницы в документе с книжной на альбомную, а редактор делает альбомными все. За макрос спасибо, но всё-таки интересно, а можно ли без макросов менять ориентацию страницы с книжной на альбомную(только одной страницы в документе, в котором их много)?

  6. 05.03.2008 в 17:00 | #6

    Klinton, вопрос правильный. Для этого вам нужно вставлять разделы и в каждом разделе устанавливать свою ориентацию. В Word 2007 для этого перейдите на вкладку Разметка страницы - группа команд Параметры страницы - нажмите кнопку Разрывы - выберите команду Следующая страница. Ориентация меняется на этой же вкладке.

  7. Frozzy
    27.03.2008 в 14:18 | #7

    Спасиба, за макросы, очень полезная вещь. Есть такой вопрос: можнго ли поменять ориентацию страницы и чтобы колонтитул тоже поменял ориентацию?

  8. Sharomov
    12.06.2009 в 22:01 | #8

    Антон, огромное спасибо за макрос

  9. Анатолий
    03.03.2010 в 16:47 | #9

    Проблема. Открываю новый документ - курсор не вверху-слева, а посредине-слева. Дальше - больше. Роспечатываю документ, выходит разметкой страницы не книжной, а альбомной и то только на половине листа. Вопщем полная ярунда получается. Переустановка не помогает. Посоветуйте как быть. Да, раньше такого не было.

  10. 03.03.2010 в 20:54 | #10

    нужно настроить вертикальное выравнивание текста на странице:

  11. myth
    12.03.2010 в 16:21 | #11

    а как сделать смену ориентации для страницы найденного слова?

    я пробовал

    Sub Orientation2()
    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True 
        .Text = "альбомная ориентация" 'ищем слово
        
        Do While .Execute
            Selection.PageSetup.Orientation = wdOrientLandscape
        Loop
    End With
    End Sub

    и у меня в word2003 меняются ориентации всех листов а не только тех корорые принедлежат найденным словам

    Нужно чтоб все были а книжной, а по найденным словам - альбомная

  12. 12.03.2010 в 16:30 | #12

    Это можно сделать, если у вас есть разделы.

  13. myth
    13.03.2010 в 00:33 | #13

    спасибо. У меня получилось. Только вот незадача - очень долго работает. Скажите пожалуйста а можно ли вставлять разделы и указывать ориентации с помощью спец. символов или тегов. Дело в том что изначально у меня html, я его импортирую в WORD, а затем запускаю скрипт. Но 8 метров он ну уж очень долго курит, я даже не могу дождаться. Хотелось бы заранее в исходном html или текстовом файлике указать что то вроде спец символов - инструкций.

    Возможно такое?

  14. 13.03.2010 в 07:15 | #14

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

    Application.ScreenUpdating = False  ' Запрещаем обновление экрана во время работы макроса
    Application.ScreenUpdating = True   ' Разрешаем обновление экрана после окончания работы макроса

    Еще можно изменить вид документа на Обычный.

  15. myth
    13.03.2010 в 11:47 | #15

    стало лучше, но при большом документе где то на 300 странице вылетает -

    "НЕ ДОСТАТОЧНО ПАМЯТИ. ДАННАЯ ОПЕРАЦИЯ НЕ МОЖЕТ БЫТЬ ОТМЕНЕНА ПОСЛЕ ЕЕ ЗАВЕРШЕНИЯ. ПРОДОЛЖИТЬ?". Получается что он не может обработать больщой документ...

    Может можно как то в фоне открыть документ и пропарсить?

  16. 13.03.2010 в 14:06 | #16

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

    Возможно, вам стоит сначала очистить весь документ от форматирования html...

  17. myth
    13.03.2010 в 15:53 | #17

    Вобщем все оказалось намного круче и проще.

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

    тег создания раздела:

    
    

    стиль для указания разделу альбомной ориентации:

    <style>
      @page SectionLandscape 
      {size:841.9pt 595.3pt;mso-page-orientation:landscape;}
      div.SectionLandscape {page:SectionLandscape;}
    </style>

  18. myth
    13.03.2010 в 16:17 | #18

    как то блог неправильно теки кода обработал

    я имел ввиду

    стиль для альбомной ориентации

    @page SectionLandscape 
      {size:841.9pt 595.3pt;mso-page-orientation:landscape;}
      div.SectionLandscape {page:SectionLandscape;}

  19. 13.03.2010 в 16:22 | #19

    Это куда такое вставляется? Как я понимаю, вы пользуетесь какой-то внешней программой для формирования HTML-страницы...

  20. myth
    13.03.2010 в 16:30 | #20

    скоп html страниц генерируется perl скриптом. Количество страниц порядка 2000.

    Делать альбомную ориентацию с помощью стандартных средств html,javascript,svg и css оказалось неблагородным делом, да и существующие стандарты также оказались кривыми. От сюда после долгой раскурки родилось - преобразовывать все word-ом.

    вставляется там где нужно создать новый раздел
    <style >
    @page SectionLandscape
    {size:841.9pt 595.3pt;mso-page-orientation:landscape;}
    div.SectionLandscape {page:SectionLandscape;}
    </style >
    вставляется в начале html документа

    ну а дальше d i v элементу в разделе, для которго нужно создать альбомную ориентацию, указываем класс SectionLandscape.

  21. Аноним
    13.03.2010 в 16:35 | #21

    блин

    нужно что то с блогом делать.

    
    

    вставляется там где нужно создать новый раздел

  22. 13.03.2010 в 16:45 | #22

    Да, не с блогом делать. Достаточно зарегистрироваться, и код оформлять через соответствующие теги (над формой комментария).

  23. Мария
    06.05.2010 в 12:51 | #23

    спасибо вам за то, что вы здесь пишите!

    очень помогает в жизни!smile

  24. Гульмира
    20.10.2010 в 16:31 | #24

    Уважаемый Антон Кокин,

    Большое спасибо Аллаху за то что вы есть и за вашу помощь! =)

    Ваши советы просты и работают...

    Пусть у вас в жизни все будет ПРЕКРАСНО!

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

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

^ Наверх