Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставка страницы с другой ориентацией - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Вставка страницы с другой ориентацией
elovkov Дата: Четверг, 27.02.2025, 13:56 | Сообщение № 1
Группа: Друзья
Ранг: Обитатель
Сообщений: 456
Репутация: 75 ±
Замечаний: 0% ±

Excel 2013
Всем привет, тут на форуме выложили макрос для Ворд, вставляющий в документ раздел с другой ориентацией. Есть пара вопросов:
1. А можно как-то сделать так, чтобы у следующего за ним раздела убиралось свойство особого колонтитула 1й страницы.
Т.е. Раздел 1 А4 книжн. с особым колонтитулом, Раздел 2 вставленный макросом альбомная, Раздел 3 А4 книжная продолжается без особого колонтитула.
Конечно можно зайти в колонтитул и просто снять галочку, но может это в коде можно прописать?
2. Можно в макросе прописать поля создаваемого листа альбомного? Верхнее -2,5 нижнее 1, лево/право по 1,5
Собственно сам макрос, который выложил Boris_R, он там перестал отвечать)

[vba]
Код
Sub insert_new_section()
Application.ScreenUpdating = False
Call AddSectionAndKillLinkToPrevious1
Call AddSectionAndKillLinkToPrevious1
Selection.MoveUp Unit:=wdLine, Count:=1
    With Selection.Sections(1).PageSetup
    .DifferentFirstPageHeaderFooter = False 'Особый кололнтитул первой страницы
    .OddAndEvenPagesHeaderFooter = False    'Разные колонтитулы четных и нечетных
    .PaperSize = wdPaperA4              'Размер страницы wdPaperA4=7, wdPaperA3=6
    .Orientation = wdOrientLandscape    'wdOrientPortrait=0 - книжная,
                    'wdOrientLandscape=1 -альбомная
    End With
'Удаляем верхние и нижние колонтитулы из всталенного раздела
'Актуально, если документ с рамками.
'Перед вставкой новых рамок удаляем старые
    Dim rngHeaderFooter As Range
    Set rngHeaderFooter = Selection.Sections(1) _
        .Footers(wdHeaderFooterPrimary).Range
    rngHeaderFooter.Delete
    Set rngHeaderFooter = Selection.Sections(1) _
        .Headers(wdHeaderFooterPrimary).Range
    rngHeaderFooter.Delete
    Set rngHeaderFooter = Nothing
Application.ScreenUpdating = True
End Sub

Sub AddSectionAndKillLinkToPrevious1()
'часть кода отсюда
'http://gregmaxey.mvps.org/word_tip_pages/add_section_break_and_unlink_headers.html

    Dim j As Long
Dim oDoc As Word.Document
Dim myRng As Word.Range
Set oDoc = ActiveDocument
Selection.InsertBreak Type:=wdSectionBreakNextPage
With Selection.Sections(1)
    For j = 1 To 3
    .Headers(j).LinkToPrevious = False
    .Footers(j).LinkToPrevious = False
    Next j
    'Note: j provides the constant value to unlink all three header\footer types.
    With Selection.Sections(1).Headers(1).PageNumbers
'        .NumberStyle = wdPageNumberStyleArabic
'        .HeadingLevelForChapter = 0
'        .IncludeChapterNumber = False
'        .ChapterPageSeparator = wdSeparatorHyphen
        .RestartNumberingAtSection = False 'Выбираем "Продолжить нумерацию"
'        .RestartNumberingAtSection = True  'Эти строки, если
'        .StartingNumber = 1                'надо начать с единицы
    End With
End With
Set oDoc = Nothing
End Sub
[/vba]


Умное лицо это еще не признак ума. Все глупости на земле делаются именно с этим выражением лица
 
Ответить
СообщениеВсем привет, тут на форуме выложили макрос для Ворд, вставляющий в документ раздел с другой ориентацией. Есть пара вопросов:
1. А можно как-то сделать так, чтобы у следующего за ним раздела убиралось свойство особого колонтитула 1й страницы.
Т.е. Раздел 1 А4 книжн. с особым колонтитулом, Раздел 2 вставленный макросом альбомная, Раздел 3 А4 книжная продолжается без особого колонтитула.
Конечно можно зайти в колонтитул и просто снять галочку, но может это в коде можно прописать?
2. Можно в макросе прописать поля создаваемого листа альбомного? Верхнее -2,5 нижнее 1, лево/право по 1,5
Собственно сам макрос, который выложил Boris_R, он там перестал отвечать)

[vba]
Код
Sub insert_new_section()
Application.ScreenUpdating = False
Call AddSectionAndKillLinkToPrevious1
Call AddSectionAndKillLinkToPrevious1
Selection.MoveUp Unit:=wdLine, Count:=1
    With Selection.Sections(1).PageSetup
    .DifferentFirstPageHeaderFooter = False 'Особый кололнтитул первой страницы
    .OddAndEvenPagesHeaderFooter = False    'Разные колонтитулы четных и нечетных
    .PaperSize = wdPaperA4              'Размер страницы wdPaperA4=7, wdPaperA3=6
    .Orientation = wdOrientLandscape    'wdOrientPortrait=0 - книжная,
                    'wdOrientLandscape=1 -альбомная
    End With
'Удаляем верхние и нижние колонтитулы из всталенного раздела
'Актуально, если документ с рамками.
'Перед вставкой новых рамок удаляем старые
    Dim rngHeaderFooter As Range
    Set rngHeaderFooter = Selection.Sections(1) _
        .Footers(wdHeaderFooterPrimary).Range
    rngHeaderFooter.Delete
    Set rngHeaderFooter = Selection.Sections(1) _
        .Headers(wdHeaderFooterPrimary).Range
    rngHeaderFooter.Delete
    Set rngHeaderFooter = Nothing
Application.ScreenUpdating = True
End Sub

Sub AddSectionAndKillLinkToPrevious1()
'часть кода отсюда
'http://gregmaxey.mvps.org/word_tip_pages/add_section_break_and_unlink_headers.html

    Dim j As Long
Dim oDoc As Word.Document
Dim myRng As Word.Range
Set oDoc = ActiveDocument
Selection.InsertBreak Type:=wdSectionBreakNextPage
With Selection.Sections(1)
    For j = 1 To 3
    .Headers(j).LinkToPrevious = False
    .Footers(j).LinkToPrevious = False
    Next j
    'Note: j provides the constant value to unlink all three header\footer types.
    With Selection.Sections(1).Headers(1).PageNumbers
'        .NumberStyle = wdPageNumberStyleArabic
'        .HeadingLevelForChapter = 0
'        .IncludeChapterNumber = False
'        .ChapterPageSeparator = wdSeparatorHyphen
        .RestartNumberingAtSection = False 'Выбираем "Продолжить нумерацию"
'        .RestartNumberingAtSection = True  'Эти строки, если
'        .StartingNumber = 1                'надо начать с единицы
    End With
End With
Set oDoc = Nothing
End Sub
[/vba]

Автор - elovkov
Дата добавления - 27.02.2025 в 13:56
cmivadwot Дата: Четверг, 27.02.2025, 14:17 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 559
Репутация: 102 ±
Замечаний: 0% ±

365
elovkov, может из этого что получится...
[vba]
Код
Sub insert_new_section()
    Application.ScreenUpdating = False
    
    ' Вставляем новый раздел и отключаем связь колонтитулов
    Call AddSectionAndKillLinkToPrevious1
    
    ' Настраиваем ориентацию, поля и колонтитулы для нового раздела
    With Selection.Sections(1).PageSetup
        .DifferentFirstPageHeaderFooter = False ' Отключаем особый колонтитул первой страницы
        .OddAndEvenPagesHeaderFooter = False   ' Отключаем разные колонтитулы для четных и нечетных страниц
        .PaperSize = wdPaperA4                 ' Размер страницы A4
        .Orientation = wdOrientLandscape       ' Альбомная ориентация
        ' Устанавливаем поля для альбомного листа
        .TopMargin = CentimetersToPoints(2.5)  ' Верхнее поле 2,5 см
        .BottomMargin = CentimetersToPoints(1) ' Нижнее поле 1 см
        .LeftMargin = CentimetersToPoints(1.5) ' Левое поле 1,5 см
        .RightMargin = CentimetersToPoints(1.5) ' Правое поле 1,5 см
    End With
    
    ' Удаляем верхние и нижние колонтитулы из вставленного раздела
    Dim rngHeaderFooter As Range
    Set rngHeaderFooter = Selection.Sections(1).Footers(wdHeaderFooterPrimary).Range
    rngHeaderFooter.Delete
    Set rngHeaderFooter = Selection.Sections(1).Headers(wdHeaderFooterPrimary).Range
    rngHeaderFooter.Delete
    Set rngHeaderFooter = Nothing
    
    ' Вставляем следующий раздел и настраиваем его
    Call AddSectionAndKillLinkToPrevious1
    With Selection.Sections(1).PageSetup
        .Orientation = wdOrientPortrait        ' Книжная ориентация
        .DifferentFirstPageHeaderFooter = False ' Отключаем особый колонтитул первой страницы
    End With
    
    Application.ScreenUpdating = True
End Sub

Sub AddSectionAndKillLinkToPrevious1()
    ' Вставка разрыва раздела и отключение связи колонтитулов
    Dim j As Long
    Dim oDoc As Word.Document
    Set oDoc = ActiveDocument
    
    Selection.InsertBreak Type:=wdSectionBreakNextPage
    
    With Selection.Sections(1)
        For j = 1 To 3
            .Headers(j).LinkToPrevious = False
            .Footers(j).LinkToPrevious = False
        Next j
        
        ' Настройка нумерации страниц
        With .Headers(1).PageNumbers
            .RestartNumberingAtSection = False ' Продолжить нумерацию
        End With
    End With
    
    Set oDoc = Nothing
End Sub
[/vba]
 
Ответить
Сообщениеelovkov, может из этого что получится...
[vba]
Код
Sub insert_new_section()
    Application.ScreenUpdating = False
    
    ' Вставляем новый раздел и отключаем связь колонтитулов
    Call AddSectionAndKillLinkToPrevious1
    
    ' Настраиваем ориентацию, поля и колонтитулы для нового раздела
    With Selection.Sections(1).PageSetup
        .DifferentFirstPageHeaderFooter = False ' Отключаем особый колонтитул первой страницы
        .OddAndEvenPagesHeaderFooter = False   ' Отключаем разные колонтитулы для четных и нечетных страниц
        .PaperSize = wdPaperA4                 ' Размер страницы A4
        .Orientation = wdOrientLandscape       ' Альбомная ориентация
        ' Устанавливаем поля для альбомного листа
        .TopMargin = CentimetersToPoints(2.5)  ' Верхнее поле 2,5 см
        .BottomMargin = CentimetersToPoints(1) ' Нижнее поле 1 см
        .LeftMargin = CentimetersToPoints(1.5) ' Левое поле 1,5 см
        .RightMargin = CentimetersToPoints(1.5) ' Правое поле 1,5 см
    End With
    
    ' Удаляем верхние и нижние колонтитулы из вставленного раздела
    Dim rngHeaderFooter As Range
    Set rngHeaderFooter = Selection.Sections(1).Footers(wdHeaderFooterPrimary).Range
    rngHeaderFooter.Delete
    Set rngHeaderFooter = Selection.Sections(1).Headers(wdHeaderFooterPrimary).Range
    rngHeaderFooter.Delete
    Set rngHeaderFooter = Nothing
    
    ' Вставляем следующий раздел и настраиваем его
    Call AddSectionAndKillLinkToPrevious1
    With Selection.Sections(1).PageSetup
        .Orientation = wdOrientPortrait        ' Книжная ориентация
        .DifferentFirstPageHeaderFooter = False ' Отключаем особый колонтитул первой страницы
    End With
    
    Application.ScreenUpdating = True
End Sub

Sub AddSectionAndKillLinkToPrevious1()
    ' Вставка разрыва раздела и отключение связи колонтитулов
    Dim j As Long
    Dim oDoc As Word.Document
    Set oDoc = ActiveDocument
    
    Selection.InsertBreak Type:=wdSectionBreakNextPage
    
    With Selection.Sections(1)
        For j = 1 To 3
            .Headers(j).LinkToPrevious = False
            .Footers(j).LinkToPrevious = False
        Next j
        
        ' Настройка нумерации страниц
        With .Headers(1).PageNumbers
            .RestartNumberingAtSection = False ' Продолжить нумерацию
        End With
    End With
    
    Set oDoc = Nothing
End Sub
[/vba]

Автор - cmivadwot
Дата добавления - 27.02.2025 в 14:17
elovkov Дата: Четверг, 27.02.2025, 14:49 | Сообщение № 3
Группа: Друзья
Ранг: Обитатель
Сообщений: 456
Репутация: 75 ±
Замечаний: 0% ±

Excel 2013
cmivadwot, спасибо, с полями сработало, взял себе в код
А вот колонтитулы в Разделе 3 раньше сохранялись, как в 1, теперь удаляются совсем
В целом это как в первом коде пусть и останется, в рамку все равно лезть, править нумерацию и шифр, галку "особого" снять не долго.

В общем спасибо, чутка допилил настройками листа)


Умное лицо это еще не признак ума. Все глупости на земле делаются именно с этим выражением лица
 
Ответить
Сообщениеcmivadwot, спасибо, с полями сработало, взял себе в код
А вот колонтитулы в Разделе 3 раньше сохранялись, как в 1, теперь удаляются совсем
В целом это как в первом коде пусть и останется, в рамку все равно лезть, править нумерацию и шифр, галку "особого" снять не долго.

В общем спасибо, чутка допилил настройками листа)

Автор - elovkov
Дата добавления - 27.02.2025 в 14:49
cmivadwot Дата: Четверг, 27.02.2025, 22:17 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 559
Репутация: 102 ±
Замечаний: 0% ±

365
elovkov, вроде так...
К сообщению приложен файл: doc11.docm (36.8 Kb)
 
Ответить
Сообщениеelovkov, вроде так...

Автор - cmivadwot
Дата добавления - 27.02.2025 в 22:17
elovkov Дата: Пятница, 28.02.2025, 08:38 | Сообщение № 5
Группа: Друзья
Ранг: Обитатель
Сообщений: 456
Репутация: 75 ±
Замечаний: 0% ±

Excel 2013
cmivadwot, не, так не очищается альбомный) У меня шаблон проекта с ГОСТовскими рамками в колонтитулах. Все, на самом деле фигню я про этот особый придумал, меня так устраивает, взял код настройки полей, спасибо, вот так получилось, норм

[vba]
Код
Sub insert_new_section()
Application.ScreenUpdating = False
Call AddSectionAndKillLinkToPrevious1
Call AddSectionAndKillLinkToPrevious1
Selection.MoveUp Unit:=wdLine, Count:=1
    With Selection.Sections(1).PageSetup
    .DifferentFirstPageHeaderFooter = False 'Особый кололнтитул первой страницы
    .OddAndEvenPagesHeaderFooter = False    'Разные колонтитулы четных и нечетных
    .PaperSize = wdPaperA4                  'Размер страницы wdPaperA4=7, wdPaperA3=6
    .Orientation = wdOrientLandscape        'wdOrientLandscape=1 -альбомная
                    
    ' Устанавливаем поля для альбомного листа
    .TopMargin = CentimetersToPoints(-2.4)  ' Верхнее поле -2,4 см
    .BottomMargin = CentimetersToPoints(1) ' Нижнее поле 1 см
    .LeftMargin = CentimetersToPoints(1.5) ' Левое поле 1,5 см
    .RightMargin = CentimetersToPoints(1.5) ' Правое поле 1,5 см

    End With
'Удаляем верхние и нижние колонтитулы из всталенного раздела
'Актуально, если документ с рамками.
'Перед вставкой новых рамок удаляем старые
    Dim rngHeaderFooter As Range
    Set rngHeaderFooter = Selection.Sections(1) _
        .Footers(wdHeaderFooterPrimary).Range
    rngHeaderFooter.Delete
    Set rngHeaderFooter = Selection.Sections(1) _
        .Headers(wdHeaderFooterPrimary).Range
    rngHeaderFooter.Delete
    Set rngHeaderFooter = Nothing
Application.ScreenUpdating = True
End Sub

Sub AddSectionAndKillLinkToPrevious1()
'часть кода отсюда
'http://gregmaxey.mvps.org/word_tip_pages/add_section_break_and_unlink_headers.html

    Dim j As Long
Dim oDoc As Word.Document
Dim myRng As Word.Range
Set oDoc = ActiveDocument
Selection.InsertBreak Type:=wdSectionBreakNextPage
With Selection.Sections(1)
    For j = 1 To 3
    .Headers(j).LinkToPrevious = False
    .Footers(j).LinkToPrevious = False
    Next j
    'Note: j provides the constant value to unlink all three header\footer types.
    With Selection.Sections(1).Headers(1).PageNumbers
'        .NumberStyle = wdPageNumberStyleArabic
'        .HeadingLevelForChapter = 0
'        .IncludeChapterNumber = False
'        .ChapterPageSeparator = wdSeparatorHyphen
        .RestartNumberingAtSection = False 'Выбираем "Продолжить нумерацию"
'        .RestartNumberingAtSection = True  'Эти строки, если
'        .StartingNumber = 1                'надо начать с единицы
    End With
End With
Set oDoc = Nothing
End Sub
[/vba]


Умное лицо это еще не признак ума. Все глупости на земле делаются именно с этим выражением лица
 
Ответить
Сообщениеcmivadwot, не, так не очищается альбомный) У меня шаблон проекта с ГОСТовскими рамками в колонтитулах. Все, на самом деле фигню я про этот особый придумал, меня так устраивает, взял код настройки полей, спасибо, вот так получилось, норм

[vba]
Код
Sub insert_new_section()
Application.ScreenUpdating = False
Call AddSectionAndKillLinkToPrevious1
Call AddSectionAndKillLinkToPrevious1
Selection.MoveUp Unit:=wdLine, Count:=1
    With Selection.Sections(1).PageSetup
    .DifferentFirstPageHeaderFooter = False 'Особый кололнтитул первой страницы
    .OddAndEvenPagesHeaderFooter = False    'Разные колонтитулы четных и нечетных
    .PaperSize = wdPaperA4                  'Размер страницы wdPaperA4=7, wdPaperA3=6
    .Orientation = wdOrientLandscape        'wdOrientLandscape=1 -альбомная
                    
    ' Устанавливаем поля для альбомного листа
    .TopMargin = CentimetersToPoints(-2.4)  ' Верхнее поле -2,4 см
    .BottomMargin = CentimetersToPoints(1) ' Нижнее поле 1 см
    .LeftMargin = CentimetersToPoints(1.5) ' Левое поле 1,5 см
    .RightMargin = CentimetersToPoints(1.5) ' Правое поле 1,5 см

    End With
'Удаляем верхние и нижние колонтитулы из всталенного раздела
'Актуально, если документ с рамками.
'Перед вставкой новых рамок удаляем старые
    Dim rngHeaderFooter As Range
    Set rngHeaderFooter = Selection.Sections(1) _
        .Footers(wdHeaderFooterPrimary).Range
    rngHeaderFooter.Delete
    Set rngHeaderFooter = Selection.Sections(1) _
        .Headers(wdHeaderFooterPrimary).Range
    rngHeaderFooter.Delete
    Set rngHeaderFooter = Nothing
Application.ScreenUpdating = True
End Sub

Sub AddSectionAndKillLinkToPrevious1()
'часть кода отсюда
'http://gregmaxey.mvps.org/word_tip_pages/add_section_break_and_unlink_headers.html

    Dim j As Long
Dim oDoc As Word.Document
Dim myRng As Word.Range
Set oDoc = ActiveDocument
Selection.InsertBreak Type:=wdSectionBreakNextPage
With Selection.Sections(1)
    For j = 1 To 3
    .Headers(j).LinkToPrevious = False
    .Footers(j).LinkToPrevious = False
    Next j
    'Note: j provides the constant value to unlink all three header\footer types.
    With Selection.Sections(1).Headers(1).PageNumbers
'        .NumberStyle = wdPageNumberStyleArabic
'        .HeadingLevelForChapter = 0
'        .IncludeChapterNumber = False
'        .ChapterPageSeparator = wdSeparatorHyphen
        .RestartNumberingAtSection = False 'Выбираем "Продолжить нумерацию"
'        .RestartNumberingAtSection = True  'Эти строки, если
'        .StartingNumber = 1                'надо начать с единицы
    End With
End With
Set oDoc = Nothing
End Sub
[/vba]

Автор - elovkov
Дата добавления - 28.02.2025 в 08:38
cmivadwot Дата: Пятница, 28.02.2025, 13:24 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 559
Репутация: 102 ±
Замечаний: 0% ±

365
elovkov, а со снятием особого колонтитула тоже не зашло? .DifferentFirstPageHeaderFooter = False ' Отключаем особый колонтитул первой страницы
 
Ответить
Сообщениеelovkov, а со снятием особого колонтитула тоже не зашло? .DifferentFirstPageHeaderFooter = False ' Отключаем особый колонтитул первой страницы

Автор - cmivadwot
Дата добавления - 28.02.2025 в 13:24
elovkov Дата: Пятница, 28.02.2025, 14:46 | Сообщение № 7
Группа: Друзья
Ранг: Обитатель
Сообщений: 456
Репутация: 75 ±
Замечаний: 0% ±

Excel 2013
cmivadwot, да не надо оно, все равно заходить в колонтитулы, а там секунда снять/поставить, тут главное что лист для вставки подготавливается альбомный как надо


Умное лицо это еще не признак ума. Все глупости на земле делаются именно с этим выражением лица
 
Ответить
Сообщениеcmivadwot, да не надо оно, все равно заходить в колонтитулы, а там секунда снять/поставить, тут главное что лист для вставки подготавливается альбомный как надо

Автор - elovkov
Дата добавления - 28.02.2025 в 14:46
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!