1

Тема: Вставить автотекст в последний раздел и изменить колонтитул

Помогите пожалуйста, (только начинаю осваивать VBA) делаю шаблон для Разделов пояснительной записки , если редакция документа меняется, то должна добавляться таблица регистрации изменений. Эту таблицу добавил как автотекст. Как сделать так, чтобы в конце документа создавался последний раздел (А4 книжный) и таблица вставлялась в него, и чтобы колонтитул (нижний) в этом разделе был другой (рядом с нумерацией были буквы ТИ.(и нумерация начиналась с 1)). Из другого шаблона (делал не я (предназначалось для вставки таблиц рег. измен. для обложки и титульного листа)) взял процедуру и немного подправил  (изменил свойство Count на LastIndexSection, думал что вставляться хотя бы будет в последний раздел, но нет, вставляется в самое начало первого раздела). Прикладываю файл

Post's attachments

пояснительная записка.dot 272.5 Кб, 1 скачиваний с 2015-04-13 

You don't have the permssions to download the attachments of this post.

2

Re: Вставить автотекст в последний раздел и изменить колонтитул

добавлю саму процедуру:

Public Sub Лист_изменений()
 Dim ActiveWindowViewType As Long
 If ActiveDocument.Range.Find.Execute("Таблица регистрации изменений") Then
  MsgBox "Лист изменений уже существует"
  Exit Sub
 End If
 'Application.ScreenUpdating = False
 ActiveWindowViewType = ActiveWindow.View.Type
 ActiveWindow.View.Type = wdNormalView
 Selection.GoTo What:=wdGoToSection, Which:=wdGoToAbsolute, Count:=LastIndexSection
 ActiveDocument.AttachedTemplate.AutoTextEntries("Таблица регистрации изменений").Insert _
  Where:=Selection.Range, RichText:=True
 Selection.GoToPrevious What:=wdGoToSection
 ActiveWindow.View.SplitSpecial = wdPanePrimaryHeader
 Selection.WholeStory
' UpdateUnlink Selection.Range, 2
 ActiveWindow.View.SplitSpecial = wdPanePrimaryFooter
 Selection.WholeStory
' UpdateUnlink Selection.Range, 2
 ActiveWindow.ActivePane.Close
 ActiveWindow.View.Type = ActiveWindowViewType
 Application.ScreenUpdating = True
 MsgBox "Лист изменений успешно вставлен"
End Sub

3

Re: Вставить автотекст в последний раздел и изменить колонтитул

Удалил у тебя одну строку и вставил свой блок (там видно)
У меня работает. Правда я не вникал, каким должен быть результат

Public Sub Лист_изменений()
 Dim ActiveWindowViewType As Long
 If ActiveDocument.Range.Find.Execute("Таблица регистрации изменений") Then
  MsgBox "Лист изменений уже существует"
  Exit Sub
 End If
 'Application.ScreenUpdating = False
 ActiveWindowViewType = ActiveWindow.View.Type
 ActiveWindow.View.Type = wdNormalView
 
 
    'вставляем разрыв в конце документа
    Selection.EndKey Unit:=WdUnits.wdStory
    Selection.InsertBreak Type:=wdPageBreak

    'разорвать связь колонтитулов второго раздела с колонтитулами первого
    With Application.ActiveDocument.Sections(ActiveDocument.Sections.Count)
        .Footers(WdHeaderFooterIndex.wdHeaderFooterFirstPage).LinkToPrevious = False
        .Footers(WdHeaderFooterIndex.wdHeaderFooterPrimary).LinkToPrevious = False
    End With
 
    'Selection.GoTo What:=wdGoToSection, Which:=wdGoToAbsolute, Count:=LastIndexSection
 
 
 ActiveDocument.AttachedTemplate.AutoTextEntries("Таблица регистрации изменений").Insert _
  Where:=Selection.Range, RichText:=True
 Selection.GoToPrevious What:=wdGoToSection
 ActiveWindow.View.SplitSpecial = wdPanePrimaryHeader
 Selection.WholeStory
' UpdateUnlink Selection.Range, 2
 ActiveWindow.View.SplitSpecial = wdPanePrimaryFooter
 Selection.WholeStory
' UpdateUnlink Selection.Range, 2
 ActiveWindow.ActivePane.Close
 ActiveWindow.View.Type = ActiveWindowViewType
 Application.ScreenUpdating = True
 MsgBox "Лист изменений успешно вставлен"
End Sub

4

Re: Вставить автотекст в последний раздел и изменить колонтитул

Настаев пишет:

Удалил у тебя одну строки в ставил свой блок (там видно)
У меня работает. Правда я не вникал, каким должен быть результат

Спасибо, вставка раздела происходит в конце документа. В вашем блоке исправил разрыв страницы на разрыв раздела со следующей страницы (т.к. колонтитул должен быть другим)

    'вставляем разрыв в конце документа
    Selection.EndKey Unit:=WdUnits.wdStory
    Selection.InsertBreak Type:=wdPageBreak

     Еще выявил нюанс, если при вставке таблицы, последним был раздел с листом другого формата или ориентации, то происходит вставка раздела в аналогичный предыдущему лист. Задал вставку раздела А4:

With Selection.PageSetup
        .LineNumbering.Active = False
        .Orientation = wdOrientPortrait
        .TopMargin = CentimetersToPoints(3)
        .BottomMargin = CentimetersToPoints(2)
        .LeftMargin = CentimetersToPoints(2.5)
        .RightMargin = CentimetersToPoints(1.5)
        .Gutter = CentimetersToPoints(0)
        .HeaderDistance = CentimetersToPoints(1)
        .FooterDistance = CentimetersToPoints(1)
        .PageWidth = CentimetersToPoints(21)
        .PageHeight = CentimetersToPoints(29.7)
        .SectionStart = wdSectionNewPage
        .GutterPos = wdGutterPosLeft
    End With

но колонтитул берет из предыдущего, хоть и не задано Как в предыдущем
     Подскажите пожалуйста еще, как задать в этом последнем разделе другой нижний колонтитул - чтобы рядом с нумерацией были буквы ТИ.(и нумерация начиналась с 1)?

5

Re: Вставить автотекст в последний раздел и изменить колонтитул

Я могу ошибаться. Подзабыл многое...
Но по-моему для вставки разных колонтитулов нужно разрывать именно раздел, а не страницу.

6

Re: Вставить автотекст в последний раздел и изменить колонтитул

Уточню: галка "Как в предыдущем..." подразумевает "Как в предыдущем разделе".
То есть вставка колонтитула на страницу распространяется на весь раздел.
И вы можете делать одну из страниц альбомной, но колонтитул будет тот же. Потому что они в одном разделе.

Post's attachments

Новая заметка Skitch.png 228.96 Кб, файл не был скачан. 

You don't have the permssions to download the attachments of this post.