Всем привет, тут на форуме выложили макрос для Ворд, вставляющий в документ раздел с другой ориентацией. Есть пара вопросов: 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
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
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
cmivadwot, спасибо, с полями сработало, взял себе в код А вот колонтитулы в Разделе 3 раньше сохранялись, как в 1, теперь удаляются совсем В целом это как в первом коде пусть и останется, в рамку все равно лезть, править нумерацию и шифр, галку "особого" снять не долго.
В общем спасибо, чутка допилил настройками листа)
cmivadwot, спасибо, с полями сработало, взял себе в код А вот колонтитулы в Разделе 3 раньше сохранялись, как в 1, теперь удаляются совсем В целом это как в первом коде пусть и останется, в рамку все равно лезть, править нумерацию и шифр, галку "особого" снять не долго.
В общем спасибо, чутка допилил настройками листа)elovkov
Умное лицо это еще не признак ума. Все глупости на земле делаются именно с этим выражением лица
cmivadwot, не, так не очищается альбомный) У меня шаблон проекта с ГОСТовскими рамками в колонтитулах. Все, на самом деле фигню я про этот особый придумал, меня так устраивает, взял код настройки полей, спасибо, вот так получилось, норм
' Устанавливаем поля для альбомного листа .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, не, так не очищается альбомный) У меня шаблон проекта с ГОСТовскими рамками в колонтитулах. Все, на самом деле фигню я про этот особый придумал, меня так устраивает, взял код настройки полей, спасибо, вот так получилось, норм
' Устанавливаем поля для альбомного листа .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
elovkov, а со снятием особого колонтитула тоже не зашло? .DifferentFirstPageHeaderFooter = False ' Отключаем особый колонтитул первой страницы
elovkov, а со снятием особого колонтитула тоже не зашло? .DifferentFirstPageHeaderFooter = False ' Отключаем особый колонтитул первой страницыcmivadwot
cmivadwot, да не надо оно, все равно заходить в колонтитулы, а там секунда снять/поставить, тут главное что лист для вставки подготавливается альбомный как надо
cmivadwot, да не надо оно, все равно заходить в колонтитулы, а там секунда снять/поставить, тут главное что лист для вставки подготавливается альбомный как надоelovkov
Умное лицо это еще не признак ума. Все глупости на земле делаются именно с этим выражением лица