Sub AldfaerRapport() ' ' versie 3.2 (19 maart 2006) ' ' --------------------------------------------------------------------------- ' Negeer fouten tijdens de macro uitvoering. Deactiveer het scherm. ' --------------------------------------------------------------------------- On Error Resume Next Application.ScreenUpdating = False ' --------------------------------------------------------------------------- ' Schakel spelling en grammatica checks uit. ' --------------------------------------------------------------------------- ActiveDocument.Range().NoProofing = True ' --------------------------------------------------------------------------- ' Zorg ervoor dat fotos en onderschriften altijd op dezelfde pagina staan. ' --------------------------------------------------------------------------- For Each Table In ActiveDocument.Tables For Each Row In Table.Rows Row.AllowBreakAcrossPages = False Next Next ' --------------------------------------------------------------------------- ' Zorg ervoor dat alle regels van een paragraaf altijd op dezelfde pagina ' staan. Voor erg lange paragrafen laten we echter Word's weduwen/wezen ' mechanisme zijn gang gaan. ' --------------------------------------------------------------------------- With ActiveDocument.Styles(wdStyleNormal).ParagraphFormat .KeepTogether = True .WidowControl = True .KeepWithNext = False End With For Each Paragraph In ActiveDocument.Paragraphs If Paragraph.Range.Characters.Count > _ 5500 / ActiveDocument.Styles("standaard").Font.Size Then Paragraph.KeepTogether = False End If Next ' --------------------------------------------------------------------------- ' Zorg ervoor dat een een alleenstaande "Kinderen van" regel altijd op ' dezelfde pagina staat als het eerste kind. ' --------------------------------------------------------------------------- With ActiveDocument.Styles("kinderen").ParagraphFormat .KeepWithNext = True End With ' --------------------------------------------------------------------------- ' Zorg ervoor dat een feittitel altijd op dezelfde pagina staat als het ' eerste bijbehorende feit. ' --------------------------------------------------------------------------- With ActiveDocument.Styles("feittitel").ParagraphFormat .KeepWithNext = True End With ' --------------------------------------------------------------------------- ' Zorg ervoor dat een titel altijd op dezelfde pagina staat als de paragraaf ' die op de titel volgt. Als een generatie-titel gevolgd wordt door een ' paragraaf met verborgen tekst, dan is de (hierna volgende) instelling van ' stijl "verberg" ook van belang. ' --------------------------------------------------------------------------- With ActiveDocument.Styles(wdStyleHeading2).ParagraphFormat .KeepWithNext = True End With ' --------------------------------------------------------------------------- ' Zorg ervoor dat de verborgen teksten voor de voetregels altijd op de juiste ' pagina staan. Als de verborgen tekst volgt op een titel, dan zorgen we ' ervoor dat de titel en de volgende paragraaf op dezelfde pagina staan. ' --------------------------------------------------------------------------- For Each Paragraph In ActiveDocument.Paragraphs If Paragraph.Style = "verberg" Then If Paragraph.Previous(1).Style = wdStyleHeading2 Then Paragraph.KeepWithNext = True Else Paragraph.Previous(1).KeepWithNext = True End If End If Next ' --------------------------------------------------------------------------- ' Zet pagina formaat, marges en layout voor tweezijdig afdrukken. ' --------------------------------------------------------------------------- With ActiveDocument.PageSetup .Orientation = wdOrientPortrait .PageWidth = CentimetersToPoints(21) .PageHeight = CentimetersToPoints(29.7) .TopMargin = CentimetersToPoints(2.5) .BottomMargin = CentimetersToPoints(3.5) .LeftMargin = CentimetersToPoints(2.5) .RightMargin = CentimetersToPoints(2.5) .Gutter = CentimetersToPoints(1.5) .HeaderDistance = CentimetersToPoints(1) .FooterDistance = CentimetersToPoints(2) .OddAndEvenPagesHeaderFooter = True ' Onderdruk de voettekst op de titelpagina, als die aanwezig is. If ActiveDocument.Paragraphs(1).Style = "verberg" Then .DifferentFirstPageHeaderFooter = True Else .DifferentFirstPageHeaderFooter = False End If .VerticalAlignment = wdAlignVerticalTop .MirrorMargins = True .TwoPagesOnOne = False .GutterPos = wdGutterPosLeft End With ' --------------------------------------------------------------------------- ' Voeg voetregels in. ' --------------------------------------------------------------------------- ' Lettertype en tabulaties. With ActiveDocument.Styles(wdStyleFooter) .Font = ActiveDocument.Styles("standaard").Font .ParagraphFormat.TabStops.ClearAll .ParagraphFormat.TabStops.Add _ Position:=CentimetersToPoints(14.5), Alignment:=wdAlignTabRight, _ Leader:=wdTabLeaderSpaces End With ' Oneven pagina's. ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Select With Selection .Range.Fields.Add Range:=Selection.Range, Type:=wdFieldStyleRef, _ Text:="verberg", PreserveFormatting:=True .TypeText Text:=vbTab .Range.Fields.Add Range:=Selection.Range, Type:=wdFieldPage, _ Text:="", PreserveFormatting:=True End With ' Even pagina's. ActiveDocument.Sections(1).Footers(wdHeaderFooterEvenPages).Range.Select With Selection .Range.Fields.Add Range:=Selection.Range, Type:=wdFieldPage, _ Text:="", PreserveFormatting:=True .TypeText Text:=vbTab .Range.Fields.Add Range:=Selection.Range, Type:=wdFieldStyleRef, _ Text:="verberg", PreserveFormatting:=True End With ' --------------------------------------------------------------------------- ' Voeg een blanco pagina in na de titelpagina, indien aanwezig. ' --------------------------------------------------------------------------- If ActiveDocument.Paragraphs(1).Style = "verberg" Then For Each Paragraph In ActiveDocument.Paragraphs ' Het lijkt alsof een fout in VB het onmogelijk maakt om hier de waarde ' wdStyleHeading2 te gebruiken. If Paragraph.Style = "Heading 2" Then ' Voor alle zekerheid testen we ook de stijl van de vorige paragraaf. If Paragraph.Previous(1).Style = "verberg" Then Paragraph.Previous(1).PageBreakBefore = True End If Exit For End If Next End If ' --------------------------------------------------------------------------- ' Toon het document in opmaak-vorm. ' --------------------------------------------------------------------------- With ActiveDocument.ActiveWindow If .View.SplitSpecial = wdPaneNone Then .ActivePane.View.Type = wdPrintView Else .View.Type = wdPrintView End If End With ' --------------------------------------------------------------------------- ' Open het afdruk-voorbeeld. ' --------------------------------------------------------------------------- ActiveDocument.PrintPreview With ActiveDocument.ActiveWindow.ActivePane.View.Zoom .PageColumns = 1 .PageRows = 1 End With ' --------------------------------------------------------------------------- ' Activeer het scherm. ' --------------------------------------------------------------------------- Application.ScreenUpdating = True End Sub