Обновление поля в текстовом поле (Microsoft Word)
У Джея есть ситуация, когда у него есть поле свойств документа, вставленное в текстовое поле в документе. Использование 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 [Обновление поля в текстовом поле]
.