Статьи из блога
Автоматическое обновление полей при открытии документа
Ваши документы могут содержать различные поля: перекрестные ссылки, оглавления, предметные указатели, нумерацию, даты и т.д., некоторые из которых нуждаются в периодическом обновлении. Например, добавлены или изменились названия глав, которые присутствуют в оглавлении, рисунки были перенесены, удалены или добавлены новые и так далее. После этих действий необходимо принудительно обновлять поля.
Однако редактор Word не имеет стандартных возможностей обновления всех полей в документе одновременно и без лишних мышедвижений (если не считать использование сочетаний клавиш для выделения всего текста - «Ctrl+A» и последующего обновления с помощью клавиши «F9»).
Тем не менее, есть решение: можно воспользоваться специальным макросом, который будет автоматически обновлять все ваши поля при каждом открытии документа.
Для этого разместите приведенный ниже код макроса в ваш шаблон Normal.dot (Normal.dotm), на основе которого вы создаете свои документы, или в конкретный документ (P.S.: макрос обновлен 27.03.2008, так как Оглавление в документе не обновлялось, если это не сделать явным образом).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Sub AutoOpen() 'Автообновление всех полей документа при его открытии Dim aStory As Range Dim aField As Field Dim myTOC As TableOfContents For Each aStory In ActiveDocument.StoryRanges For Each aField In aStory.Fields aField.Update Next aField Next aStory For Each myTOC In ActiveDocument.TablesOfContents myTOC.Update Next myTOC End Sub |
Если вы желаете обновлять поля вручную, то измените наименование макроса, создайте для него кнопку и разместите ее на панели инструментов (для Word 2003) или на панели быстрого доступа (для Word 2007).
Если вы не знаете, как подключить к документу и применить этот макрос, изучите следующие заметки с сайта:
Создание макроса из готового кода
Метки: AutoOpen | макросы | поля
Просмотров: 49737
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 3 способа очистки списка недавно открытых документов
- Word 2007: полотно, рисунки, линии
- Word 97. Слияние документов как один из способов упростить свою работу
- Абзац с цветным фоном
- Автозаполняемые колонтитулы
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Автоформат документов
- Буквица
- Быстрая смена ориентации страниц документа
- Быстрое изменение стиля форматирования текста
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрое удаление границ у таблицы
- Быстрый ввод текста с помощью команды =rand()
- Быстрый поиск форматированного текста
- В чем различие между Автозаменой и Автотекстом
- В чем различие между стилями Обычный (Normal) и Основной текст (Body Text)?
- Ввод повторяющихся фрагментов текста в Word 2007
- Ввод часто повторяющихся фрагментов текста
- Вставка будущей даты
- Вставка документа с книжной ориентацией в документ с альбомной ориентацией
Комментариев: 8
Имеется колонтитул в котором нумерация страниц и поле - "имя файла". К сожалению ваш код не помог обновить поля в колонтитуле
При включении макросов код заработал. вопрос снят
Панель инструментов
Слияние(появится встроеное меню)
кнопка с желтым конвертом. "Выбрать тип документа"
точка должна(как правила там и стоит) стоять на "Обычный документ word"
ОК.
все обновляется. 100%
можно енту кнопку вывести на стандартное меню и пользоваться.
У меня не обновляются поля в колонтитулах. В тексте теже поля обновляются. как это можно исправить?
Ищем через поиск по сайту:
Макрос обновления полей в колонтитулах
Пошерстил wordexpert и составил макрос обновляющий все и во всем поля:
Sub
RegenPoley()
'Автообновление всех полей документа при его открытии
Dim
aStory
As
Range
Dim
aField
As
Field
Dim
myTOC
As
TableOfContents
For
Each
aStory
In
ActiveDocument.StoryRanges
For
Each
aField
In
aStory.Fields
aField.Update
Next
aField
Next
aStory
For
Each
myTOC
In
ActiveDocument.TablesOfContents
myTOC.Update
Next
myTOC
'Обновление полей в надписях, содержащихся в колонтитулах
Application.ScreenUpdating =
False
ActiveDocument.PrintPreview
ActiveDocument.ClosePrintPreview
Application.ScreenUpdating =
True
End
Sub
Спасибо всем за помощь!
Поскольку поля обновляются перед предварительным просмотром, то можно сделать так:
Sub
UpdateAllFields()
Application.ScreenUpdating =
False
ActiveDocument.PrintPreview
ActiveDocument.ClosePrintPreview
Application.ScreenUpdating =
True
End
Sub
как удалить этот макрос?