Compresi intestazioni e piè di pagina quando si seleziona Tutti

Tim ha creato una macro semplice per aggiornare tutti i campi in un modello. La macro include un passo che seleziona l'intero documento, proprio come premendo Ctrl + A. Questo passaggio non seleziona le intestazioni e piè di pagina, e Tim ha paura che ci possono essere i campi da aggiornare in quei luoghi. Si chiede se c'è un modo per includere le intestazioni e piè di pagina quando si seleziona tutto, o se c'è un modo diverso per la sua macro per aggiornare i campi nelle aree di intestazione o piè di pagina.

La semplice risposta è che è necessario modificare il codice di macro in modo che appaia in tutte le diverse aree di Word che ci potrebbe essere campi. Il problema con l'utilizzo di un approccio di "seleziona tutto" è che esso seleziona solo testo nel documento principale. Intestazioni, piè di pagina, e una serie di altri elementi sono mantenuti nei loro strati separati che li impediscono di essere selezionato con tutto il testo del documento.

Se si desidera semplicemente aggiornare i campi nel testo principale e nelle intestazioni e piè di pagina, quindi è necessario utilizzare una tecnica come il seguente:

MyUpdateFields1 Sub ()
ActiveDocument.StoryRanges (wdMainTextStory) .Fields.Update
ActiveDocument.StoryRanges (wdPrimaryFooterStory) .Fields.Update
ActiveDocument.StoryRanges (wdPrimaryHeaderStory) .Fields.Update
End Sub

Si noti che i diversi strati di un documento sono indicati come "storie" e mantenuti nella loro propria collezione. Mentre questo semplice macro aggiorna molto velocemente i campi nelle storie che contengono il testo principale, i piè di pagina, e le intestazioni, ci sono altre storie (strati), dove ci potrebbero essere i campi che richiedono l'aggiornamento. La seguente macro guarda attraverso ogni storia, indipendentemente dal tipo, e fa l'aggiornamento richiesto:

MyUpdateFields2 Sub ()
Storia Dim Come Word.Range

Per ogni storia In ActiveDocument.StoryRanges
Fare
story.Fields.Update
'Controllare storie legate come le storie collegate non sono indipendenti
Set storia = story.NextStoryRange
Loop Fino (storia Is Nothing)
Il Prossimo
End Sub

Se davvero si vuole essere completa, tuttavia, non vi è più che i diversi strati di storia che avete bisogno di guardare attraverso. Per esempio, può essere che ci sono alcuni campi contenuti in caselle di testo che necessitano di aggiornamento. Una macro più completa è necessaria per affrontare tutti questi altri luoghi che i campi possano essere collocati. Nel seguente esempio, notare i diversi elementi del documento che può essere controllato per campi.

MyUpdateFields3 Sub ()
Doc fioco come documento 'puntatore per Active Document
Dim WND con nome 'puntatore alla finestra del documento
Dim lngMain As Long 'principale Pane Tipo Supporto
Dim lngSplit As Long 'Tipo Split Holder
Dim lngActPane As Long 'Numero ActivePane
Dim rngStory come gamma 'Gamma Objwct per Looping attraverso Stories
Dim TOC Come Sommario oggetto TableOfContents '
Dim TOA Come Tabella delle autorità Object TableOfAuthorities '
Dim TOF Come Indice delle figure oggetto TableOfFigures '
Shp fioco come Shape

'Imposta Oggetti
Set doc = ActiveDocument
Set WND = ActiveDocument.ActiveWindow

'Ottenere Attivo Numero Pane
lngActPane = wnd.ActivePane.Index

'Tenere Vista Tipo di pannello principale
lngMain = wnd.Panes (1) .View.Type

'Tenere SplitSpecial
lngSplit = wnd.View.SplitSpecial

'Sbarazzarsi di qualsiasi divisione
wnd.View.SplitSpecial = wdPaneNone

'Vista Impostare Normal
wnd.View.Type = wdNormalView

'Loop attraverso ogni storia nel doc per aggiornare
Per ogni rngStory In doc.StoryRanges
Se rngStory.StoryType = wdCommentsStory Poi
Application.DisplayAlerts = wdAlertsNone
"Aggiorna campi
rngStory.Fields.Update
Application.DisplayAlerts = wdAlertsAll
Altro
"Aggiorna campi
rngStory.Fields.Update
End If
Il Prossimo

Per ogni shp In doc.Shapes
Con shp.TextFrame
Se .HasText Poi
shp.TextFrame.TextRange.Fields.Update
End If
End With
Il Prossimo

'Loop attraverso TOC e aggiornamento
Per ogni TOC In doc.TablesOfContents
TOC.Update
Il Prossimo

'Loop attraverso TOA e aggiornamento
Per Ogni doc.TablesOfAuthorities TOA In
TOA.Update
Il Prossimo

'Loop attraverso TOF e aggiornamento
Per ogni TOF In doc.TablesOfFigures
TOF.Update
Il Prossimo

'Split allo stato originale Return
wnd.View.SplitSpecial = lngSplit

'Ritorna riquadro principale allo stato originale
wnd.Panes (1) .View.Type = lngMain

'Riquadro corretto Attivo
wnd.Panes (lngActPane) .Activate

'Chiudere e rilasciare tutti i puntatori
Set WND = Nothing
Set doc = Nothing
End Sub

WordTips è la vostra fonte per la formazione Microsoft Word conveniente. (Microsoft Word è il più popolare software di elaborazione testi del mondo.) Questa punta (522) si applica a Microsoft Word 97, 2000, 2002, e 2003. È possibile trovare una versione di questo suggerimento per l'interfaccia a barra multifunzione di Word (Word 2007 e più tardi) qui: intestazioni e piè di pagina Compresi Quando si seleziona tutto.