Det er indstillingerne i Word på den enkelte computer/for den enkelte bruger, der afgør, om makroer tillades. Der kan dog være sat Group Policy op, som totalt hindrer afvikling af makroer.
Man kan kun gemme makroer i Word-dokument i docm- eller dotm-format.
Link til artikel på engelsk om sikkerhedsindstillingerne for makroer i Word:
https://support.office.com/en-us/article/enable-or-disable-macros-in-office-files-12b036fd-d140-4e74-b45e-16fed1a7e5c6?NS=WINWORD&Version=16&SysLcid=1033&UiLcid=1033&AppVer=ZWD160&HelpId=62817&ui=en-US&rs=en-US&ad=USJeg anbefaler indstillingen Disable all macros with notification.
Nedenfor har jeg beskrevet en løsningsmulighed, og jeg har lavet makrokode, du kan tage udgangspunkt i. Jeg ved ikke, hvad der ellers skal være i dokumentet – det har betydning for løsningen.
Jeg har lige nu kun mulighed for at se engelsk version af Word, så betegnelser er på engelsk. Du kan se danske betegnelser her:
https://support.office.com/da-dk/article/om-indholdskontrolelementer-283b1e29-0b77-4781-b236-2d02c1cce1c2?ui=da-DK&rs=da-DK&ad=DK1. Indsæt en content conrol (indholdskontrolelement) af typen Drop Down List Content Control (via fanen Developer/Udvikler).
2. Hvis der skal være 5 muligheder, så tilføj 1, 2, 3, 4, 5 som valgmuligheder i den indsatte content control.
3. Navngiv content control’en ”Progression”.
4. Under den indsatte content control, indsæt en tabel med 1 række og 5 kolonner (dvs. 5 celler).
5. Gå til makroeditoren > ThisDocument i dokumentet.
6. I makrovinduet, indsæt nedenstående makrokode:
----------------MAKRO START---------------------
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
Dim n As Long
Dim rngCells As Range
If ContentControl.Tag = "Progression" Then
'værdien, som er valgt
n = Val(ContentControl.Range.Text)
'tilføj farve til lige så mange celler i tabellen
'fjern først farve, hvis andet valg har været truffet tidligere
With ActiveDocument.Tables(1)
.Range.Shading.BackgroundPatternColor = wdColorAutomatic
Set rngCells = .Range
rngCells.End = .Cell(1, n).Range.End
rngCells.Shading.BackgroundPatternColor = wdColorBrightGreen
End With
End If
’ryd op
Set rngCells = nothing
End Sub
----------------MAKRO SLUT---------------------
VIGTIGT:
Makrokoden ovenfor forudsætter, at du kan kaldt content control ”Progression”. Hvis du bruger t andet navn, skal du rette i makroen.
Hvis der skal være mere end 5 valgmuligheder, skal du rette content control, tabel og makro.
Makrokoden forudsætter, at tabellen, som skal have farvede celler, er første tabel i dokumentet. Hvis der er andre tabeller før den, skal du rette i makroen.
Der bør indbygges fejlhåndtering – men nu har du noget, du kan tage udgangspunkt i.
Makroen kaldes automatisk, når man forlader en hvilken som helst content control (ContentControlOnExit) – men koden tjekker navnet og gør kun noget, hvis det er ”Progression”. Cellerne i tabellen farves (farve her sat til grøn), når man har valgt en værdi i ”Progression” og klikker et sted uden for den content control.