Шаблон Word 2010 с автоматически обновляемыми полями

Я хочу создать шаблон Word 2010 для своей команды, который гарантирует, что каждая страница содержит нижний колонтитул, отображающий следующую информацию:

  • Кто последний сохранил файл
  • Когда файл был сохранен последним
  • Путь и имя файла, в котором хранится файл

Поэтому я создал файл шаблона (dotx) с нижним колонтитулом, который содержит следующие коды полей:

  • {LASTSAVEDBY * Caps * MERGEFORMAT}
  • {SAVEDATE \ @ "d MMM yyy" * MERGEFORMAT}
  • {FILENAME -p}

Однако, сохраняя этот шаблон и создавая новый документ (затем сохраняя его), поля не обновляются. LASTSAVEDBY отображается как пробел, SAVEDATE показывает 0 XXX 0000, а FILENAME показывает Document1.

Я также попытался сохранить это как шаблон точки в случае, если есть скрытые макросы, но результаты одинаковы.

Поэтому, читая статью Microsoft KnowledegeBase об этом, вы получаете беспричинный ответ, что это по дизайну, поэтому вам нужно написать макрос для этого. Удобно они предоставляют макрос, который обновляет поля при открытии файла, а не сохраняет. Это действительно имеет смысл для нескольких полей, поэтому, если вы используете LASTSAVEDBY и SAVEDATE, это будет иметь смысл.

Просто помните, что вы не увидите обновлений, пока вы снова не откроете документ. Для нижних колонтитулов это абсолютно нормально.

И поскольку это макрос, вам определенно нужно сохранить как точку.

Для тех, кто нуждается в обновлении полей при сохранении, на форумах VBA Express обсуждается , или вы можете просто адаптировать макрос из документа Microsoft .

Обновление vbscript от Microsoft хорош, но приводит к документу, который всегда считает, что он был отредактирован, поэтому всегда запрашивает сохранение при закрытии. Большинство пользователей всегда будут нажимать на это, что приведет к значениям LASTSAVEDBY и SAVEDATE, показывающим, когда последний документ был прочитан, а кто.

Поэтому я добавил строку, чтобы сразу же пометить документ как неизменный после обновления полей. Любые дополнительные изменения в документе сбрасывают это значение, предоставляя подсказку сохранения при закрытии.

Вот код макроса:

Sub AutoOpen() ' ' AutoOpen Macro ' ' Dim aStory As Range Dim aField As Field For Each aStory In ActiveDocument.StoryRanges For Each aField In aStory.Fields aField.Update Next aField Next aStory ' set document as unchanged (prevents save dialog popping up when closing) ' further edits will set this back to false and restore ' the save dialog on close ActiveDocument.Saved = True End Sub 

Обновление. Приведенный выше код работает нормально, если вы не сохранили его в вашем шаблоне Normal.dotm, и в этом случае он запускается каждый раз при открытии любого документа. Если документ открывается в защищенном представлении (т. Е. Он был загружен из Интернета или появился в виде вложения электронной почты), то ActiveDocument недоступен. Решение заключается в проверке того, что документ не находится в защищенном представлении перед запуском функций внутри макроса. Вот обновленный макрокоманд, в том числе оператор If, чтобы проверить, что документ не находится в защищенном режиме:

 Sub AutoOpen() ' ' AutoOpen Macro ' ' Dim aStory As Range Dim aField As Field ' Check that document is not in Protected View before doing anything If Application.ActiveProtectedViewWindow Is Nothing Then For Each aStory In ActiveDocument.StoryRanges For Each aField In aStory.Fields aField.Update Next aField Next aStory ' set document as unchanged (prevents save dialog popping up when 'closing) - further changes will set this back ActiveDocument.Saved = True End If End Sub 
  • Word 2010: создание стиля без цвета шрифта
  • Как создать гиперссылку в документе Word в другое место в том же документе?
  • Word 2010 Количество страниц без первой страницы
  • Уравнения Word 2010 меняют без моего одобрения
  • Обновление текстового документа MS из двух других документов
  • Word 2010 надстрочный ярлык перестает работать
  • Перекрестный номер Word 2010 с главой без ярлыка
  • Восстановление или восстановление поврежденного паролем файла Word 2010
  • Как я могу автоматически конвертировать все комментарии в документе Word 2010 в сноски?
  • Как изменить содержание в Word 2010, чтобы отображать только заголовки 1-3?
  • Форматирование номеров страниц в оглавлении для включения текста
  • Давайте будем гением компьютера.