En serie af Microsoft-softwareprodukter til tekstbehandling til oprettelse af web-, mail- og udskriftsdokumenter.
Jeg har nu testet hele din kode til indsættelse af tekstbokse i sidehoveder (udkommentering af progressbar m.m.). Jeg får samme placering af tekstbokse i FirstPage og Primary header både i Word 2016 og 365.
Mht. indholdsfortegnelsen:
Din VBA-kode indsætter et TOC-felt med følgende kode:
{ TOC \o "1-1" \h \t "Overskrift 2;2;Overskrift 3;3;Overskrift 4;4;Overskrift 5;5" }
Med ”men hos mig slår hyperlinkdelen ikke igennem” mener du da, at \h ikke kommer med i dit TOC-felt, medmindre du kører koden med F5?
Du skriver, at koden ligger i globale skabeloner. Jeg går ud fra, at disse er installeret som add-ins, dvs. placeret i Words Start-mappe. Er det korrekt?
Er dokumenterne, hvori koden bruges, tomme?
Er der kompatibilitetsindstillinger slået til under Filer > Indstillinger > Avanceret i dokumenterne?
Indgår der Event-kode i ThisDocument el.lign.?
Er generelle Word-indstillinger under Filer > Indstillinger sat i Word 365 som i Word 2016?
Har du andre add-ins installeret? Hvis det er tilfældet, har du så prøvet at deaktivere disse?
Din kode til indsættelse af tekstbokse og Selection
Da du i linjerne:
Set hd = …
allerede har defineret et Range, har du slet ikke brug for at bruge selection. Du kan helt undvære (slette) linjerne, hvor du går til sidehovedet:
SelekterSidehoved hd
hvilket er langt at foretrække.
En bemærkning om opbygningen af TOC-feltet:
Det felt, din VBA-kode danner, vil fejle på computere, som ikke har dansk brugergrænseflade i Office (fordi typografinavne er sprogafhængige), og den vil også fejle, hvis regionale indstillinger har f.eks. komma som listeseparator i stedet for semikolon. Det er måske ikke aktuelt for dine brugere, men jeg vil altid anbefale at lave sproguafhængige løsninger, så vidt det er muligt.
Du kan f.eks. danne TOC-feltet sådan (forudsætter her, at Selection, som i din kode, er stedet, hvor feltet skal indsættes – kunne med fordel ændres til Range):
Set oField = Selection.Fields.Add(Range:=Selection.Range, Type:=wdFieldEmpty)
With oField
.Code.Text = " TOC \o ""1-5"" \h \t "
.Update
End With
Set oField = Nothing
Resultatet vil være en noget enklere feltkode, som er uafhængig af sprog og regionale indstillinger:
{ TOC \o "1-5" \h \t }