В этой статье мы сосредоточимся на описании способа автоматического обновления всех полей в документе перед его закрытием.
Мы используем поля для хранения данных, которые могут измениться позже. Поэтому, как только мы внесем в них некоторые изменения, нам нужно соответствующим образом обновить поля. И, к сожалению, мost времени нам придется обновлять их вручную.
Кроме того, самая большая проблема заключается в том, что мы можем легко забыть обновить поля. Для решения этой проблемы мы предлагаем вам макрос для автоматического обновления полей перед закрытием документа.
Обновить все поля перед печатью
Вы можете изменить параметры Word, чтобы настроить поля обновления перед печатью, выполнив следующие действия:
- Во-первых, нажмите вкладку «Файл», затем «Параметры».
- Затем в открытом окне «Параметры Word» нажмите «Показать» в левом столбце.
- В правой части перейдите в раздел «Параметры печати», чтобы установить флажок «Обновить поля перед печатью».
- Наконец, нажмите «ОК».
Автоматическое обновление всех полей перед закрытием документа
- Для начала запустите редактор VBA в Word, нажав «Alt+F11».
- Затем нажмите «Обычный» проект.
- Затем в строке меню нажмите «Вставить».
- И выберите «Модуль класса».
- Затем щелкните команду «Окно свойств» в строке меню или нажмите «F4», чтобы вызвать ее.
- В окне, открытом в левом нижнем углу, назовите только что созданный модуль класса «objWordClass».
- В области кодирования введите следующие коды:
Option Explicit
Public WithEvents objWord As Word.Application
Private Sub objWord_DocumentBeforeClose(ByVal objDoc As Document, varCancel As Boolean)
Dim strButtonValue As String
Application.ScreenUpdating = False
Set objDoc = ActiveDocument
objDoc.Save
strButtonValue = MsgBox("Do you want to update all fields in this document before closing?", _
vbYesNo + vbQuestion)
If strButtonValue = vbYes Then
varCancel = True
If objDoc.Fields.Count > 0 Then
With objDoc
.Fields.Update
.Save
.Close
End With
Else
MsgBox ("There is no field in this document.")
End If
Else
varCancel = False
End If
Application.ScreenUpdating = True
End Sub
- И не забудьте нажать кнопку «Сохранить».
- Теперь все еще в «Обычном» проекте снова нажмите «Вставить» и на этот раз выберите «Модуль».
- Затем откройте модуль и вставьте эти коды:
Option Explicit Dim objWordClass As New objWordClass Public Sub AutoOpen() Set objWordClass.objWord = Word.Application End Sub
- Аналогично сохраняйте коды.
- В следующий раз, когда вы закончите редактирование документа, сохраните его. И когда вы нажмете команду «Закрыть», вы получите окно с запросом. Нажмите «Да», чтобы обновить все поля, и документ будет закрыт, когда задача будет выполнена.
Вернуть мертвый документ к жизни
Время от времени при использовании Word неизбежно возникают некоторые проблемы. Поэтому желательно быть готовым к любым возможным поврежденный документ. Лучше всего, конечно, заранее обзавестись специализированным ремонтным инструментом.
Об авторе:
Вера Чен — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая ремонт Эксель и pdf ремонт программных продуктов. Для получения дополнительной информации посетите www.datanumen.com




