Oppdatere et felt i en tekstboks

February 10  by Eliza

Jay har en situasjon der han har et dokument eiendom felt satt inn i en tekstboks i et dokument. Ved hjelp av Ctrl + A og deretter trykke F9 bør oppdatere alle eiendom dokumentfeltene i dokumentet, men dette feltet er ikke oppdatert med Jay? S handling. Prosessen for å oppdatere felt i topp- og bunntekst også oppdaterer ikke felt inne i tekstboksen. Jay lurer på om det er en måte han kan manuelt oppdatere feltet ved hjelp av tastaturet, eller hvis det er en måte å oppdatere den ved hjelp av en makro.

Felt kan plasseres i mange dokumentelementer. De kan være, for eksempel, i hoveddokumentteksten, i tekstbokser, i topp- eller bunntekster, i autofigurer, eller i spesielle tabeller. Mens du trykker Ctrl + A vil velge alle dokument, trykke F9 vant? T oppdatere feltene i alle de dokumentelementer. I stedet må du bruke en makro til å gjøre oppdateringen.

Hvis du bare vil ha en makro for å oppdatere feltene i noen av dine tekstbokser, er dette lett nok å gjøre. Følgende makro skritt gjennom hver av figurene i dokumentet (dette inkluderer tekstbokser og autofigurer) og, hvis formen inneholder tekst, oppdatere eventuelle felt det inneholder.

Sub UpdateTBFields ()
Dim SHP Som Shape

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

Denne makroen kan bli tildelt en hurtigtast, slik at du enkelt kan oppdatere feltene med et trykk på snarveien. Selvfølgelig kan du ønsker å utvikle et mer omfattende makro som oppdaterer alle feltene, uansett hvor de måtte være. (Husk? Feltene kan være i en rekke dokumentelementer.) I så fall bør du vurdere følgende mer altomfattende versjon av makroen.

Public Sub UpdateAllFields ()
Dim doc Som Document
Dim wnd Som Window
Dim lngMain Som Long
Dim lngSplit Som Long
Dim lngActPane Som Long
Dim rngStory Som Range
Dim TOC Som TableOfContents
Dim TOA Som TableOfAuthorities
Dim TOF Som TableOfFigures
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

'Loop gjennom tekstbokser og oppdatering
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 (3879) 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: Oppdatere et felt i en tekstboks.