Avatar billede lenebene Nybegynder
04. december 2006 - 13:40 Der er 7 kommentarer

Sidetal og forskellig sidemargin i Word

Hej eksperter

Jeg har en brev-skabelon i Word, som volder mig lidt kvaler. Jeg har følgende kode, som gør, at når man er på side to og taster ctrl+shift+f, så ændrer sideopsætningen sig, så højre margin bliver 2 i stedet for 5, og det virker fint.

Option Explicit

Private Sub Document_Open()
    ReformatPages
End Sub


Sub ReformatPages()
Dim sec As Section
Dim hist As Long
Dim l1 As Single
Dim r1 As Single
Dim t1 As Single
Dim b1 As Single
Dim l2 As Single
Dim r2 As Single
Dim t2 As Single
Dim b2 As Single
Dim rng As Range

l1 = 2
r1 = 5
t1 = 7.32
b1 = 2
l2 = 2
r2 = 2
t2 = 2
b2 = 2

'Remove all previous section breaks
With ActiveDocument.Range.Find
    .Execute Findtext:="^b", ReplaceWith:="", Replace:=True
End With
'Format first section
ActiveDocument.Sections(1).PageSetup.LeftMargin = CentimetersToPoints(l1)
ActiveDocument.Sections(1).PageSetup.RightMargin = CentimetersToPoints(r1)
ActiveDocument.Sections(1).PageSetup.TopMargin = CentimetersToPoints(t1)
ActiveDocument.Sections(1).PageSetup.BottomMargin = CentimetersToPoints(b1)

'Find end of first page
Set rng = ActiveDocument.Range
rng.Collapse wdCollapseStart
rng.Select

Do While Selection.Information(wdActiveEndPageNumber) < 2
    hist = Selection.End
    Selection.MoveDown
    If Selection.End = hist Then
        Exit Do
    End If
Loop

'break into two sections and format following pages
If Selection.Information(wdActiveEndPageNumber) = 2 Then
    Selection.InsertBreak wdSectionBreakNextPage
    ActiveDocument.Sections(2).PageSetup.LeftMargin = CentimetersToPoints(l2)
    ActiveDocument.Sections(2).PageSetup.RightMargin = CentimetersToPoints(r2)
    ActiveDocument.Sections(2).PageSetup.TopMargin = CentimetersToPoints(t2)
    ActiveDocument.Sections(2).PageSetup.BottomMargin = CentimetersToPoints(b2)
End If
End Sub

Problemet er at jeg også skal have sidetal på side to og frem. Når jeg indsætter følgende kode, så får jeg ingen sidetal på side 1, sidetal på side 2, ingen sidetal på side 3, men sidetal derefter.

Hvorfor får jeg ikke sidetal på side 3? Hvad skal jeg gøre anderledes?

lenebene
Avatar billede lenebene Nybegynder
04. december 2006 - 13:41 #1
Hov, der manglede kode med sidetal:

Sub sidetal()

    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
        ActivePane.View.Type = wdOutlineView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    If Selection.HeaderFooter.IsHeader = True Then
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
    Else
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    End If
    NormalTemplate.AutoTextEntries("- SIDE -").Insert Where:=Selection.Range, _
        RichText:=True
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub
Avatar billede learningvba Nybegynder
05. december 2006 - 07:46 #2
Har du, som anbefalet i spm. http://www.eksperten.dk/spm/743176 (som du gerne må lukke) kigget efter hjælp til ordet "DifferentFirstPageHeaderFooter" ?

Håber det kan hjælpe dig lidt videre.
Avatar billede lenebene Nybegynder
05. december 2006 - 08:14 #3
Det har jeg prøvet, men jeg kunne stadig ikke få det til at virke. Om det så skyldes, at jeg ved for lidt om VBA, det ved jeg ikke...
Avatar billede lenebene Nybegynder
05. december 2006 - 08:40 #4
Jeg har prøvet at indsætte denne kode til sidst i den øverste kode jeg viste:

With ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary)
    .PageNumbers.Add _
        PageNumberAlignment:=wdAlignPageNumberCenter, _
        FirstPage:=False
End With

Men når jeg så bruger ctrl+shift+f på side to, så forsvinder sidetallet på side to, men bliver der på de resterende.
Avatar billede learningvba Nybegynder
05. december 2006 - 10:30 #5
Din Sub sidetal skal arbejde på Sections, da du skal indstille Header og Footer pr. Section.
Vær opmærksom på at DifferentFirstPageHeaderFooter skal være False.

Ctrl+Skift+F giver FED i min Word (2003) og burde ikke vælte noget.

(Hvis jeg bruger din kode på et dokument på 4 sider, med sektionsskifte mellem side 1 og side 2, så bliver min side 2 placeret på side 1, den bliver efterfulgt af først 1 sideskift og derefter et side-sektionsskift, hvilket giver en blank side... (Sidehoved for side 1 og 2 bliver identisk))

Håber det kan hjælpe dig lidt videre.
Avatar billede learningvba Nybegynder
13. december 2006 - 08:07 #6
Hjalp det?
Avatar billede lenebene Nybegynder
14. december 2006 - 22:05 #7
Njaaa, lidt. Jeg søgte lidt mere på DifferentFirstPageHeaderFooter og fandt noget jeg kunne bruge. Nu har jeg så bare det problem, at når jeg printer flere sider så kommer både side 1 og 2 på brevpapir og resten på hvidt papir. Det er kun side 1, der skal på brevpapir. Nogle idéer til hvordan jeg kan løse det?

P.S. Ham der oprindeligt lavede det har lavet en makro med Ctrl+Skift+F, der ændrer margener mv.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester