5

Я использую Word 2007, но сохраняю свои документы в форматах .doc (в отличие от .docx), потому что это политика компании.

У меня настроен ToC, но есть ли способ его автоматического обновления (при открытии документа, сохранении или иным образом)? Word help предлагает обновить его при открытии документа, но этого не происходит.

Есть идеи?

2 ответа2

3

Если установлен флажок «Инструменты»> «Параметры»> «Печать»> «Обновить поля» (в Word 2007, кнопка «Office»> «Параметры Word»> «Дисплей»> «Обновить поля перед печатью»), то после перехода к предварительному просмотру и обратно обновятся поля. Но так же легко нажать Ctrl+A и затем F9.

Если вы ищете что-то, что вообще не требует взаимодействия с пользователем, тогда вам нужен макрос.
Пример макроса для обновления всех полей типа ToC:

Sub TOCFieldUpdate()
Автор Чарльз Кайл Кеньон 27 января 2005 г.
'Field Updater - TOC поля
Dim oField As Field
При ошибке возобновить следующее
Для каждого oField в ActiveDocument.поля
Если офилд.Type = wdFieldTOC Тогда
oField.Обновить
Конец, если
Если офилд.Type = wdFieldTOA Тогда
oField.Обновить
Конец, если
Next oField
End Sub

Если вы хотите периодически выполнять вышеупомянутый макрос, вот еще один макрос для этого.
это будет обновлять ToC каждые 5 минут:

Public Sub ToCUpdate()
Вызовите TOCFieldUpdate
DoEvents
Заявка.OnTime When:= Now + TimeValue("00:05:00"), name:= "ToCUpdate"
End Sub

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

Примечание: вышесказанное не проверено и, что еще хуже, является моей самой первой попыткой написания VBA.

0

Вам понадобится макрос для этого.

У вас есть пример такого макроса здесь, используется для обновления в поле "Сохранить дату". Он будет работать со всеми полями в документе, и оглавление также является полем, которое должно помочь вам.

если вас не волнует поле "Сохранить дату" (и, следовательно, хитрость сохранить документ дважды, чтобы поле "Сохранить дату" действительно обновилось), вы можете удалить следующие строки:

Dim bSaveDate As Boolean
bSaveDate = False

...

If oField.Type = wdFieldSaveDate Then
    bSaveDate = True
End If

...

If bSaveDate = True Then
    MsgBox "Save a second time to update a save date field"
End If

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .