更新文本框中的字段(Microsoft Word)
Jay有一种情况,他在文档的文本框中插入了文档属性字段。使用Ctrl + A,然后按F9键,将更新文档中的所有属性文档字段,但是Jay的操作不会更新此字段。更新页眉和页脚中的字段的过程也不会更新文本框中的字段。
Jay想知道是否可以使用键盘手动更新字段,或者是否可以使用宏来更新字段。
字段可以放置在许多文档元素中。例如,它们可以在主文档文本,文本框,页眉或页脚,自选图形或特殊表中。当按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_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。
_WordTips_是您进行经济有效的Microsoft Word培训的来源。
(Microsoft Word是世界上最流行的文字处理软件。)本技巧(12344)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。您可以找到此技巧的版本,以用于Word的旧菜单界面在这里: