1

Тема: Изменение полей документа с последующей вставкой автотекста и страниц

Здравствуйте уважаемые форумчане!
Подскажите пожалуйста как должен выглядеть код макроса, который сможет реализовать следующее (Word 2003):
1. Поля страницы должны быть изменены на – верхнее (2 см), левое (2,5 см), правое (1 см), нижнее (6 см).
2. На данную страницы вставляется автотекст.
Автотекст представляет собой рамку для листов формата А4 (ГОСТ 2.104, форма 1). Данный автотекст, по моему соображению, должен быть вставлен в колонтитул, т.к. при заполнении одного листа данными, они должны быть продлены на последующих с тем же оформлением.
3. При вставке автотекста должна быть автоматически вставлена пустая страница.

2

Re: Изменение полей документа с последующей вставкой автотекста и страниц

Не вдаваясь в подробности, этот макрос может выглядеть так:

Sub AutoAutoAuto()
  Dim rng As Range
  
  With ActiveDocument
    'Установка полей
    With .PageSetup
      .LeftMargin = CentimetersToPoints(2.5)
      .RightMargin = CentimetersToPoints(1)
      .TopMargin = CentimetersToPoints(2)
      .BottomMargin = CentimetersToPoints(6)
    End With
    'Вставка автотекста в колонтитул
    Set rng = .Sections(1).Headers(wdHeaderFooterPrimary).Range
    rng.Collapse
    .AttachedTemplate.AutoTextEntries("Имя элемента автотекста").Insert rng
  End With
  'Вставка разрыва страницы в конце документа
  Set rng = ActiveDocument.Range
  rng.Collapse wdCollapseEnd
  rng.InsertBreak wdPageBreak
End Sub
Лучше день потерять — потом за пять минут долететь!

3

Re: Изменение полей документа с последующей вставкой автотекста и страниц

а можете посмотреть и эту тему http://wordexpert.ru/forum/viewtopic.php?id=285
может тоже в чем-то она вам сможет пригодиться..

4

Re: Изменение полей документа с последующей вставкой автотекста и страниц

большое спасибо, попробую разобраться с подсказанными материалами!

5

Re: Изменение полей документа с последующей вставкой автотекста и страниц

Только сейчас выложил обновленные...

6

Re: Изменение полей документа с последующей вставкой автотекста и страниц

viter.alex, Ваш код рабочий, но есть одно но...
применяя данный код в документе образуется два листа с рамками, а надо
= лист с рамкой + пустой лист

Отредактировано Totalist (18.05.2010 19:17:00)

7

Re: Изменение полей документа с последующей вставкой автотекста и страниц

Totalist пишет:

Автотекст представляет собой рамку для листов формата А4 (ГОСТ 2.104, форма 1). Данный автотекст, по моему соображению, должен быть вставлен в колонтитул, т.к. при заполнении одного листа данными, они должны быть продлены на последующих с тем же оформлением.

Totalist пишет:

в документе образуется два листа с рамками, а надо
= лист с рамкой + пустой лист

Вы определитесь, что вам нужно

Лучше день потерять — потом за пять минут долететь!

8

Re: Изменение полей документа с последующей вставкой автотекста и страниц

viter.alex, ну конечно же последнее
= лист с рамкой + пустой лист

и еще вопрос:
можно ли переписать код так, чтобы макрос выполнялся как одно действие.
Т.е. когда применяю Ваш код, становится доступным отмена порядка 5-6 операций

Отредактировано Totalist (19.05.2010 07:19:46)

9

Re: Изменение полей документа с последующей вставкой автотекста и страниц

Тогда так. Но границы у всех листов будут одинаковые

Sub AutoAutoAuto()
  Dim rng As Range
  
  With ActiveDocument
    'Установка полей
    With .PageSetup
      .LeftMargin = CentimetersToPoints(2.5)
      .RightMargin = CentimetersToPoints(1)
      .TopMargin = CentimetersToPoints(2)
      .BottomMargin = CentimetersToPoints(6)
      .DifferentFirstPageHeaderFooter = True
    End With
    'Вставка автотекста в колонтитул
    Set rng = .Sections(1).Headers(wdHeaderFooterFirstPage).Range
    rng.Collapse
    .AttachedTemplate.AutoTextEntries("Полное имя файла").Insert rng
  End With
  'Вставка разрыва страницы в конце документа
  Set rng = ActiveDocument.Range
  rng.Collapse wdCollapseEnd
  rng.InsertBreak wdPageBreak
End Sub

Сделать макрос как одно действие нельзя.

Лучше день потерять — потом за пять минут долететь!