У Джея есть ситуация, когда у него есть поле свойств документа, вставленное в текстовое поле в документе. Использование Ctrl + A, а затем нажатие F9 должно обновить все поля документа свойств в документе, но это одно поле не обновляется действием Джея. Процесс обновления полей в верхних и нижних колонтитулах также не обновляет поля внутри текстового поля.

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

Поля можно размещать во многих элементах документа. Они могут быть, например, в основном тексте документа, в текстовых полях, в верхних или нижних колонтитулах, в автофигурах или в специальных таблицах. При нажатии Ctrl + A будет выделен весь ваш документ, нажатие F9 не обновит поля во всех элементах документа. Вместо этого вам нужно использовать макрос для обновления.

Если вы просто хотите, чтобы макрос обновлял поля в любом из ваших текстовых полей, это достаточно просто сделать. Следующий макрос проходит через каждую из фигур в документе (включая текстовые поля и автофигуры)

и, если фигура содержит текст, обновите все содержащиеся в ней поля.

Sub UpdateTBFields()

Dim shp As Shape

For Each shp In ActiveDocument.Shapes         With shp.TextFrame             If .HasText Then                 .TextRange.Fields.Update             End If         End With     Next End Sub

Этот макрос можно назначить сочетанию клавиш, чтобы вы могли легко обновлять поля одним касанием сочетания клавиш. Конечно, вы можете захотеть разработать более всеобъемлющий макрос, который обновляет все поля, где бы они ни находились. (Помните — поля могут быть в любом количестве элементов документа.) В этом случае рассмотрите следующую более обширную версию макроса.

Public Sub UpdateAllFields()

Dim doc As Document     Dim wnd As Window     Dim lngMain As Long     Dim lngSplit As Long     Dim lngActPane As Long     Dim rngStory As Range     Dim TOC As TableOfContents     Dim TOA As TableOfAuthorities     Dim TOF As TableOfFigures     Dim shp As Shape

' Set Objects     Set doc = ActiveDocument     Set wnd = ActiveDocument.ActiveWindow

' get Active Pane Number     lngActPane = wnd.ActivePane.Index

' Hold View Type of Main pane     lngMain = wnd.Panes(1).View.Type

' Hold SplitSpecial     lngSplit = wnd.View.SplitSpecial

' Get Rid of any split     wnd.View.SplitSpecial = wdPaneNone

' Set View to Normal     wnd.View.Type = wdNormalView

' Loop through each story in doc to update     For Each rngStory In doc.StoryRanges         If rngStory.StoryType = wdCommentsStory Then             Application.DisplayAlerts = wdAlertsNone             ' Update fields             rngStory.Fields.Update             Application.DisplayAlerts = wdAlertsAll         Else             ' Update fields             rngStory.Fields.Update         End If     Next

'Loop through text boxes and update     For Each shp In doc.Shapes         With shp.TextFrame             If .HasText Then                 shp.TextFrame.TextRange.Fields.Update             End If         End With     Next

' Loop through TOC and update     For Each TOC In doc.TablesOfContents         TOC.Update     Next

' Loop through TOA and update     For Each TOA In doc.TablesOfAuthorities         TOA.Update     Next

' Loop through TOF and update     For Each TOF In doc.TablesOfFigures         TOF.Update     Next

' Return Split to original state     wnd.View.SplitSpecial = lngSplit

' Return main pane to original state     wnd.Panes(1).View.Type = lngMain

' Active proper pane     wnd.Panes(lngActPane).Activate

' Close and release all pointers     Set wnd = Nothing     Set doc = Nothing End Sub

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (12344) применим к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365. Вы можете найти версию этого совета для старый интерфейс меню Word здесь:

link: / word-Updating_a_Field_in_a_Text_Box [Обновление поля в текстовом поле].