Vend papir, men behold margener

Dette er faktisk den første artikel om Word siden 2011, så der er løbet nogle versioner af programmet ud i sandet siden da. Denne funktion er lavet til Word 2016/2019/Word 365.

At vende papirer fra stående til liggende format, er ret nemt. Det er bare at vælge fanen Layout og knappen Retning i gruppen Sidopsætning. Derefter vælges den retning, man ikke allerede har, fx Liggende. Så vendes papirer og man skriver på den "modsatte led". Problemet er, at margener skifter. Har man således en topmargen på 3 cm, bundmargen på 2 cm, venstremargen på 4 cm og højremargen på 5 cm, vil man efter at have skiftet papirretning nu have følgende margener. Top: 5 cm, Bund: 4 cm, Venstre: 2 cm og Højre: 3 cm. Det er sådan set også OK, hvis det er det, man ønsker, men hvis man ønsker at margenerne skal forblive som de er, altså fortsat en topmargen på 3 cm, bundmargen på 2 cm, venstremargen på 4 cm og højremargen på 5 cm, bare nu på det liggende papir, kal man til at rette dem til.

Opgaven kan løses med denne makro:

Makroen skifter retning på papirer fra stående til liggende eller omvendt, men sikrer at de indstillede margener bevares i det nye format. Som det fremgår gemmes først margenernes nuværende værdier. Derefter vendes papiret, og så sættes margerne til det, de var før retningsskiftet. Makroen kan vende i begge retninger, da den ser hvilken retning papirer allerede har, og så vælger den modsatte.

Sub SkiftRetning() 

    Dim Top As Single, Bottom As Single, Right As Single, Left As Single

   'Aflæs nuværende margener og gem indstillinger
    Top = ActiveDocument.PageSetup.TopMargin
    Bottom = ActiveDocument.PageSetup.BottomMargin
    Left = ActiveDocument.PageSetup.LeftMargin
    Right = ActiveDocument.PageSetup.RightMargin

   'Vend papiret
   If Selection.PageSetup.Orientation = wdOrientPortrait Then
        Selection.PageSetup.Orientation = wdOrientLandscape
   Else
        Selection.PageSetup.Orientation = wdOrientPortrait
  
End If

  'Sæt de nye margener til de oprindelige
   With ActiveDocument.PageSetup
        .TopMargin = Top
        .BottomMargin = Bottom
        .LeftMargin = Left
        .RightMargin = Right
   End With

End Sub