Word позволяет управлять событием DocumentBeforePrint, которое, я думаю, даст вам нужный вам результат. После добавления поля текстовой формы в сам документ добавьте этот код в раздел объявлений ThisDocument VBA:
Option Explicit
Private WithEvents app As Application
Затем отредактируйте подпрограмму Document_Open () следующим образом:
Private Sub Document_Open()
Set app = Application
ActiveDocument.Variables("ReceiptNumber").Value = ActiveDocument.FormFields(1).Result
End Sub
Наконец, создайте подпрограмму DocumentBeforePrint со следующим кодом:
Private Sub app_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
Dialogs(wdDialogFilePrint).Show
With ActiveDocument
.Variables("ReceiptNumber").Value = .Variables("ReceiptNumber").Value + 1
.FormFields(1).Result = .Variables("ReceiptNumber").Value
.Save
End With
Cancel = True
End Sub
Этот код откроет диалоговое окно «Печать» и после печати увеличит счетчик и сохранит документ. Строка Cancel = True
отменяет стандартное диалоговое окно «Печать», поэтому код не пытается напечатать документ дважды. (Можно также увеличить счетчик после печати, удалив Dialogs(wdDialogFilePrint).Show
и Cancel = True
.)
Я думаю, что стоит упомянуть, что, как только код введен в действие, настройте этот процесс, дважды щелкнув в поле формы документа (поле, которое будет содержать номер квитанции) и выберите «Число» для типа поля и введите первый номер квитанции, который должен быть напечатан как «Номер по умолчанию».
После ввода значений по умолчанию в поле формы сохраните документ вручную, а затем закройте его. Теперь каждый раз, когда он открывается, содержимое поля формы будет присваиваться переменной, а событие DocumentBeforePrint будет увеличивать это поле при каждой печати документа. Если пользователю необходимо сбросить поле (из-за замятия принтера или другого непредвиденного события), он должен дважды щелкнуть поле, изменить значение по умолчанию, нажать ОК в диалоговом окне, сохранить документ и закрыть его (очистить из ранее назначенного значения для переменной счетчика). Как и прежде, открытие документа сделает его готовым к печати и увеличению. Надеюсь, это поможет.