Makro som opdaterer alle felter i et Word-dokument

I Word bruges felter til mange formål. Et felt indeholder instruktioner til Microsoft Word om, hvad programmet skal gøre. Der findes et meget stort antal felter, man kan bruge i Word. Almindeligt brugte felter er sidetal, dato, indholdsfortegnelser og krydshenvisninger. Felter bruges desuden til brevfletning.

Felter rummer fantastiske muligheder for at styre indholdet i dokumenter. Jeg vil på et senere tidspunkt forklare mere om nogle af de mange ting, man med stor fordel kan udnytte felter til. Hvis du er vant til at bruge felter, ved du, at man har brug at opdatere felterne, hvis man har ændret noget, som påvirker felternes indhold. Hvis du f.eks. har indsat en indholdsfortegnelse eller nogle krydshenvisninger og efterfølgende har ændret i dokumentet, har du brug for at opdatere felter for at få Word til at rette Indholdsfortegnelsen og krydshenvisningerne.




Man kan opdatere felter ved at markere tekst og taste F9. Det vil opdatere alle felter i det markerede. Hvis markøren står i dokumentets hovedindhold, kan du taste Ctrl+A for at markere alt og derefter taste F9 for at opdatere felter. Der er bare lige det problem, at det kun vil opdatere felter i selve det markerede område. Hvis ud f.eks. har felter i sidehoved, sidefod eller i tekstbokse, fodnoter eller slutnoter, vil disse felter ikke blive opdateret. Du vil så være nødt til at markere disse områder et for et og opdatere felter deri.

Makro klar til brug – opdater alle felter

Der er dog en anden mulighed. Ved hjælp af en makro kan du på én gang opdatere alle felter i alle områder af dokumentet. Du kan bruge makroen nedenfor:

————MAKRO START————

Sub OpdaterAlleFelter()

Dim oStory As Range
Dim oToc As TableOfContents

‘Hvert område i et dokument er en ‘Story’
‘Gennemløb alle stories og opdater felter deri

For Each oStory In ActiveDocument.StoryRanges
oStory.Fields.Update
If oStory.StoryType <> wdMainTextStory Then
While Not (oStory.NextStoryRange Is Nothing)
Set oStory = oStory.NextStoryRange
oStory.Fields.Update
Wend
End If
Next oStory

‘Opdater indholdsfortegelse(r)
For Each oToc In ActiveDocument.TablesOfContents
oToc.Update
Next oToc

‘Ryd op
Set oStory = Nothing

End Sub

————MAKRO SLUT————

Du kan kopiere makrokoden ovenfor eller hente makroen via linket nedenfor. Så kan du kopiere makroen fra det txt-dokument, der åbnes:

Du kan f.eks. kopiere denne makro til din Normal.dotm (hvis du har Word 2003 eller tidligere: Normal.dot).

Hvis du har Word 2007, Word 2010, Word 2013 eller Word 2016, kan du føje makroen til værktøjslinjen Hurtig adgang (QAT). Hvis du har Word 2003 eller tidligere version, kan du lave en knap i en værktøjslinje, som udfører makroen. Så kan du udføre makroen og derved opdatere alle felter med et enkelt klik. Du kan også knytte en tastaturgenvej til makroen, hvis du ønsker det. Hvis du har brug for hjælp til at installere makroen, kan du finde en (engelsk) vejledning her:





4 kommentarer til “Makro som opdaterer alle felter i et Word-dokument”

  1. Hanne siger:

    Hej Lene

    Kan det passe at jeg ikke kan få macroen til at virke i word 2013? Den tager ikke sidehoved og sidefod med på alle sider. Jeg har forskellig lige og ulige sidehoved-fødder og den retter kun i de ulige. Har jeg oprettet dem forkert eller er det macroen (som ellers er super).

    Med tak for rigtig god blog
    Hanne

    • Lene Fredborg siger:

      Hej Hanne

      Makroen virker også i Word 2013. Der kan forekomme specielle konstruktioner, hvor felter ikke bliver fanget og dermed opdateret af makroen ovenfor. Det gælder f.eks. felter, som findes inde i tekstbokse i et lærred (drawing canvas) i sidehoved eller -fod. Måske du har en speciel opsætning i de lige sidehoveder/-fødder? Eller er du måske kommet til at låse felter? Låste felter vil ikke blive opdateret, uanset hvor de er placeret. Felter kan låses med Ctrl+F11 og låses op med Ctrl+Shift+F11.

      Lene Fredborg

  2. Gunnar siger:

    Hej Lene

    Jeg kan ikke finde funktionen til at opdatere felter automatisk ved åbning af dokumentet. Syntes det var muligt i tidligere versioner af Word.

    For eksempel nå jeg indsætter felt filnavn+filsti så ønsker jeg at filsti opdateres når jeg har flyttet filen til en anden mappe.

    Har du en løsning?

    Gunnar

    • Lene Fredborg siger:

      Der er ikke og har ikke været nogen indstilling til automatisk opdatering af felter ved åbning af dokumenter. Der er en indstilling til automatisk opdatering af felter, når du udskriver – måske det er den, du tænker på. I Word 2010 og senere versioner findes indstillingen her: Filer > Indstillinger > Vis > Opdater felter før udskrivning.

      Du kan få opdateret felter automatisk, når du åbner et dokument, hvis du f.eks. i Normal.dotm gemmer makroen, som findes i artiklen her, og ændrer dens navn til AutoOpen, dvs. at teksten i første linje af makroen skal være:
      Sub AutoOpen()

Skriv kommentar


Subscribe to our mailing list

* indicates required E-mail * Navn *