Автоматическое обновление полей

Уильяму нужно вставить имя файла в таблицу, которая находится в текстовом поле в нижнем колонтитуле документа (это требуется от клиента). Он хочет, чтобы это имя файла автоматически обновлялось каждый раз, когда он сохраняет документ, или, по крайней мере, когда он использует «Сохранить как» для создания нового файла. Уильям вставил поле FILENAME, но ему все равно нужно не забыть открыть нижний колонтитул, щелкнуть его и нажать F9 , чтобы обновить его. Он предпочел бы, чтобы это делалось автоматически.

Исторически Word разрабатывалась с учетом того, что ваши документы в конечном итоге будут напечатаны. (Это было до того времени, когда большинство задач выполнялось онлайн, в электронном виде.) Один из артефактов, связанных с этим историческим пониманием, заключается в том, что Word не обновляет поля, пока вы не пойдете на печать. Таким образом, поля не обновляются, когда вы выполняете другие задачи, такие как сохранение или использование «Сохранить как».

Имея это в виду, вы можете сделать несколько вещей. Во-первых, заставить Word думать, что вы печатаете. Однако перед этим «обманом» вы захотите выполнить следующие действия:

  1. Отобразите диалоговое окно «Параметры Word». (В Word 2007 нажмите кнопку Office, а затем выберите «Параметры Word». В Word 2010 и более поздних версиях откройте вкладку «Файл» на ленте и нажмите кнопку «Параметры».)
  2. В левой части диалогового окна. щелкните Показать. (См. Рис. 1.)
  3. Рис. 1. Параметры отображения диалогового окна «Параметры Word».

  4. Убедитесь, что установлен флажок «Обновить поля перед печатью».
  5. Нажмите «Дополнительно» в в левой части диалогового окна.
  6. Прокрутите вниз, пока не увидите раздел «Печать». (См. Рис. 2.)
  7. Рисунок 2. Параметры печати в диалоговом окне «Параметры Word».

  8. Убедитесь, что установлен флажок Разрешить поля, содержащие отслеживаемые изменения, обновлять перед печатью.
  9. Нажмите OK, чтобы сохранить изменения.

Теперь, когда вы хотите обновить поля, все, что вам нужно сделать, это нажать Ctrl + P б>. Откроется диалоговое окно «Печать» (Word 2007) или параметры печати (более поздние версии Word). Как только вы дойдете до этого момента, поля в документе должны быть обновлены, потому что Word ожидает, что вы собираетесь печатать. Вы можете нажать Esc или щелкнуть вкладку «Главная» на ленте, чтобы отказаться от печати, и вы должны отметить, что все поля в вашем документе обновлены.

Вы могли бы также используйте макрос для выполнения этих задач. Следующий макрос не изменяет настройки в диалоговом окне «Параметры Word», но выполняет последовательность печати ровно настолько, чтобы заставить Word обновить поля.

 Sub UpdateAllFields () с ActiveDocument  .PrintPreview .ClosePrintPreview End WithEnd Sub 

При желании вы можете воспользоваться другим подходом к макросам.. Этот подход позволяет обойти любые уловки и, вместо этого, проходит через каждую из «историй» в документе и обновляет все поля, найденные в этих историях. («Историю» лучше всего рассматривать как слой в вашем документе. Главный документ – это один рассказ, верхние и нижние колонтитулы – другой, графика – другой и т. Д.) На самом деле в этом подходе используются два макроса; вы должны запустить макрос UpdateAllFields, чтобы начать процесс обновления.

 Sub UpdateAllFields () Dim objStory As Range Dim objTOC As TableOfContents Dim objTOA As TableOfAuthorities Dim objTOF As TableOfFigures Dim objIndex As Indexd Application.ScreenUp  = False Application.DisplayAlerts = wdAlertsNone Для каждой objStory в ActiveDocument.StoryRanges UpdateFieldsInStory objStory Пока нет (objStory.NextStoryRange Is Nothing) Установить objStory = objStory.NextStoryRangeTOToDataTo объекта InjStory.  ActiveDocument.TablesOfAuthorities objTOA.Update Next для каждого objTOF в ActiveDocument.TablesOfFigures objTOF.Update Next для каждого objIndex в ActiveDocument.Indexes objIndex.Update Next Application.DisplayAlerts = wdpreScreenEndAll Application.  Sub UpdateFieldsInStory (iobjStory как диапазон) Dim objShape как фигура с помощью iobjStory .Fields.Update  Выберите Case .StoryType Case wdMainTextStory, wdPrimaryHeaderStory, _ wdPrimaryFooterStory, wdEvenPagesHeaderStory, _ wdEvenPagesFooterStory, wdFirstPageHeaderStory, _ wdFirstPageFooterStory Для каждого objShape В .ShapeRange С objShape.TextFrame If .HasText Тогда .TextRange.Fields.Update End With Next End Select End Sub WithEnd 

Если вы хотите узнать больше об обновлении полей с помощью макросов, вы можете посетить эту страницу на сайте Грега Макси; обратите особое внимание на раздел «Обновление полей»:

 http://gregmaxey.mvps.org/word_tip_pages/word_fields.html 

Как видите, обновить все поля в документе не всегда просто. Казалось бы, Microsoft легко могла бы добавить такую ​​возможность, но даже после многих лет работы в Word такая возможность все еще отсутствует. Если вы хотите, чтобы Microsoft добавила эту возможность, вы можете посетить их форум UserVoice и проголосовать за такую ​​возможность:

 https://word.uservoice.com/forums/304924-word-for  -windows-настольное-приложение/предложения/11685894 

Оцените статью
Frestage.ru
Добавить комментарий