Aggiornamento di un campo in una casella di testo (Microsoft Word)
Jay ha una situazione in cui ha un campo delle proprietà del documento inserito in una casella di testo in un documento. Utilizzando Ctrl + A e quindi premendo F9 si dovrebbero aggiornare tutti i campi del documento di proprietà nel documento, ma questo campo non viene aggiornato dall’azione di Jay. Anche il processo per aggiornare i campi nelle intestazioni e nei piè di pagina non aggiorna il campo all’interno della casella di testo.
Jay si chiede se esiste un modo per aggiornare manualmente il campo utilizzando la tastiera o se esiste un modo per aggiornarlo utilizzando una macro.
I campi possono essere inseriti in molti elementi del documento. Possono essere, ad esempio, nel testo del documento principale, nelle caselle di testo, nelle intestazioni o nei piè di pagina, nelle forme automatiche o in tabelle speciali. Mentre si preme Ctrl + A si selezionerà tutto il documento, premendo F9 non si aggiornerà i campi in tutti gli elementi del documento. Invece, è necessario utilizzare una macro per eseguire l’aggiornamento.
Se vuoi semplicemente che una macro aggiorni i campi in una qualsiasi delle tue caselle di testo, questo è abbastanza facile da fare. La seguente macro passa attraverso ciascuna delle forme nel documento (ciò include le caselle di testo e le forme automatiche)
e, se la forma contiene testo, aggiorna i campi in essa contenuti.
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
Questa macro potrebbe essere assegnata a una scorciatoia da tastiera in modo da poter aggiornare facilmente i campi con il tocco della scorciatoia. Naturalmente, potresti voler sviluppare una macro più comprensiva che aggiorni tutti i campi, ovunque si trovino. (Ricorda: i campi possono trovarsi in un numero qualsiasi di elementi del documento). In tal caso, considera la seguente versione più completa della macro.
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
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti WordTips), ho preparato una pagina speciale che include informazioni utili.
WordTips è la tua fonte di formazione economica su Microsoft Word.
(Microsoft Word è il software di elaborazione testi più popolare al mondo.) Questo suggerimento (12344) si applica a Microsoft Word 2007, 2010, 2013, 2016, 2019 e Word in Office 365. Puoi trovare una versione di questo suggerimento per vecchia interfaccia del menu di Word qui: