Inkludert topp- og bunntekst når du velger alle

October 24  by Eliza

Tim laget en enkel makro for å oppdatere alle feltene i en mal. Makroen omfatter et trinn som velger hele dokumentet, omtrent som å trykke Ctrl + A. Dette trinnet velger ikke topp- og bunntekst, og Tim er redd for at det kan være felt for å bli oppdatert på disse stedene. Han lurer på om det er en måte å inkludere topp- og bunntekst når du velger alle, eller om det er en annen måte for hans makro å oppdatere feltene i topp- eller bunntekstområder.

Det enkle svaret er at du trenger å endre makrokoden slik at det ser i alle de forskjellige Word-områder som det kan være felt. Problemet med å bruke en "select all" tilnærming er at den bare velger tekst i hoveddokumentet. Topp- og bunntekst, og en rekke andre elementer er opprettholdt i sine egne separate lag som utelukker dem fra å bli valgt med all teksten i dokumentet.

Hvis du bare ønsker å oppdatere felt i hovedteksten og i topp- og bunntekst, så bør du bruke en teknikk som for eksempel følgende:

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

Legg merke til at de forskjellige lag av et dokument som er referert til som "historier" og holdes i sin egen samling. Mens denne enkle makro oppdaterer svært raskt feltene i historiene inneholder hovedteksten, bunnteksten, og overskriftene, det finnes andre historier (lag) der det kan være felt som krever oppdatering. Følgende makro ser gjennom hver historie, uansett type, og gjør det nødvendig oppdatering:

Sub MyUpdateFields2 ()
Dim historie Som Word.Range

For Hver historie I ActiveDocument.StoryRanges
Gjøre
story.Fields.Update
'Sjekk knyttet historier som koblede historier er ikke uavhengige
Still historie = story.NextStoryRange
Loop Inntil (historien er ingenting)
Neste
End Sub

Hvis du virkelig ønsker å være komplett, men det er mer enn bare de forskjellige historielagene som du trenger å se gjennom. For eksempel kan det være at det er noen områder som finnes i tekstbokser som trenger oppdatering. En mer omfattende makro er nødvendig for å håndtere alle disse andre steder som felt kan bli plassert. I følgende eksempel merke til de mange forskjellige elementene i dokumentet som kan sjekkes for felt.

Sub MyUpdateFields3 ()
Dim doc Som Document 'Peker til Active Document
Dim wnd Som Window 'Peker til Document Vindu
Dim lngMain Som Long 'Hoved Pane Type Holder
Dim lngSplit Som Long 'Split Type Holder
Dim lngActPane Som Long 'ActivePane Number
Dim rngStory Som Range 'Range Objwct for Looping gjennom Stories
Dim TOC Som TableOfContents 'Innhold objekt
Dim TOA Som TableOfAuthorities 'Table of Authorities Object
Dim TOF Som TableOfFigures 'Fortegn Tall Object
Dim SHP Som Shape

'Angi objekter
Set doc = ActiveDocument
Satt wnd = ActiveDocument.ActiveWindow

"Komme Aktiv Pane Antall
lngActPane = wnd.ActivePane.Index

'Hold Vis type of Main ruten
lngMain = wnd.Panes (1) .View.Type

'Hold SplitSpecial
lngSplit = wnd.View.SplitSpecial

'Bli kvitt noen split
wnd.View.SplitSpecial = wdPaneNone

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

'Loop gjennom hver historie i doc å oppdatere
For Hver rngStory I doc.StoryRanges
Hvis rngStory.StoryType = wdCommentsStory Deretter
Application.DisplayAlerts = wdAlertsNone
'Oppdater felt
rngStory.Fields.Update
Application.DisplayAlerts = wdAlertsAll
Else
'Oppdater felt
rngStory.Fields.Update
End If
Neste

For Hver SHP I doc.Shapes
Med shp.TextFrame
Hvis .HasText Deretter
shp.TextFrame.TextRange.Fields.Update
End If
Avslutt med
Neste

'Loop gjennom TOC og oppdatering
For Hver TOC I doc.TablesOfContents
TOC.Update
Neste

'Loop gjennom TOA og oppdatering
For hver TOA I doc.TablesOfAuthorities
TOA.Update
Neste

'Loop gjennom TOF og oppdatering
For Hver TOF I doc.TablesOfFigures
TOF.Update
Neste

«Tilbake Split til opprinnelig tilstand
wnd.View.SplitSpecial = lngSplit

«Tilbake hovedruten til opprinnelig tilstand
wnd.Panes (1) .View.Type = lngMain

"Aktiv riktig rute
wnd.Panes (lngActPane) .Activate

'Lukk og løslate alle pekere
Satt wnd = Nothing
Satt doc = Nothing
End Sub

WordTips er din kilde for kostnadseffektiv Microsoft Word trening. (Microsoft Word er den mest populære tekstbehandlingsprogrammet i verden.) Dette tipset (522) gjelder for Microsoft Word 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Word (Word 2007 og senere) her: Inkludert topp- og bunntekst når Velge Alle.