Как автоматически увеличивать номер договора при каждом открытии документа

Источник: wordexpert
Антон Кокин

Существует договор в формате word 2003. У него есть номер. Как можно сделать, чтобы при новом открытии данного документа у него увеличивался номер на один?

Я могу предложить два варианта (спасибо за помощь Александру Витеру). Оба варианта связаны с созданием макроса AutoOpen (действия, выполняемые при открытии документа).

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

Sub AutoOpen()
'увеличиваем номер договора при каждом открытии документа
'в документе существующий номер должен быть закладкой с именем num
Dim bm As Bookmark
Dim i As Long
Set bm = ActiveDocument.Bookmarks("num")
i = Val(bm.Range.Text)
bm.Range.Select
With Selection
   .Text = i + 1
   .Bookmarks.Add Name:="num"
   .Collapse wdCollapseEnd
End With
Set bm = Nothing
End Sub

2. Макрос с использованием переменной DOCVARIABLE.
Выделите номер договора и вставьте сочетанием клавиш "CTRL+F9" поле (появятся фигурные скобки и мигающий курсор между ними). Между скобками вставьте выражение DOCVARIABLE dog , чтобы получилось примерно так: {DOCVARIABLE dog}.
Затем разместите этот макрос в модуле документа или шаблона Normal.dot. Сохраните документ и закройте. При следующем открытии документа номер договора будет увеличен на единицу.

Sub AutoOpen()
  On Error Resume Next
  ActiveDocument.Variables("dog").Value = ActiveDocument.Variables("dog").Value + 1
  If Err.Number = 5825 Then ActiveDocument.Variables.Add "dog", 1: Err.Clear
  ActiveDocument.Fields.Update
End Sub

Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=22009