Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[VBA] Pagina-instelling alleen voor selectie

Ger
9 antwoorden
  • Even voorop gesteld: ik ben een volstrekte beginner met VBA.
    Het volgende: ik heb een afbeelding die paginagroot is. Die wil ik op A3-formaat hebben, dus moet die pagina ook A3 worden. Dit is een regelmatig terugkerend iets dat door diverse mensen (ook die niet zo goed overweg kunnen met Word) gedaan moet worden. Ik heb daarom een macro opgenomen die het volgende doet:
      [*:b23f557eed]afbeelding is geselecteerd [*:b23f557eed]Bestand –> pagina-instelling… [*:b23f557eed]Tab papier [*:b23f557eed]Papierformaat A3 [*:b23f557eed]Toepassen op geselecteerde tekst [*:b23f557eed]Ok.[/list:o:b23f557eed] (Vervolgens nog wat handelingen met de afbeelding en de kop- en voettekst, maar dat is in dezen -denk ik- niet interessant) Daar is het volgende uit komen rollen: [code:1:b23f557eed]Sub Processchema_vergroten() ' ' Processchema_vergroten Macro ' "&chr(10)&"Uitvergroten van processchema's tot A3 formaat en bijbehorende pagina-instellingen wijzigen. ' With Position = Selection.PageSetup .LineNumbering.Active = False .Orientation = wdOrientPortrait .TopMargin = CentimetersToPoints(5) .BottomMargin = CentimetersToPoints(2.5) .LeftMargin = CentimetersToPoints(2.5) .RightMargin = CentimetersToPoints(2.5) .Gutter = CentimetersToPoints(0) .HeaderDistance = CentimetersToPoints(1.25) .FooterDistance = CentimetersToPoints(0.47) .PageWidth = CentimetersToPoints(29.7) .PageHeight = CentimetersToPoints(42) .FirstPageTray = wdPrinterDefaultBin .OtherPagesTray = wdPrinterDefaultBin .SectionStart = wdSectionNewPage .OddAndEvenPagesHeaderFooter = False .DifferentFirstPageHeaderFooter = True .VerticalAlignment = wdAlignVerticalTop .SuppressEndnotes = False .MirrorMargins = False .TwoPagesOnOne = False .BookFoldPrinting = False .BookFoldRevPrinting = False .BookFoldPrintingSheets = 1 .GutterPos = wdGutterPosLeft End With End Sub[/code:1:b23f557eed] Probleem hierbij is, dat het [i:b23f557eed]hele document[/i:b23f557eed] nu op A3-formaat gezet wordt. Daar zit ik niet op te wachten, het moet die ene pagina zijn. Daarom heb ik bij het opnemen ook voor geselecteerde tekst gekozen. Als ik zo kijk naar de code zie ik ook staan "Selection.PageSetup". Toch lijkt dat niet goed te gaan. Google helpt me niet verder, dus stel ik de vraag maar hier: hoe krijg ik voor elkaar dat niet heel het document aangepast wordt, maar alleen die pagina?
  • Ik neem even aan dat je handmatig pagina breaks hebt gezet? Zo ja, dan hoef je de breaks voor en na de pagina die je wilt veranderen alleen maar te vervangen door sectie-einden, en dan met name de optie waarbij je gelijk een nieuwe pagina krijgt. Dit vind je ergens in het Opmaak menu.

    Dan kun je jouw macro zonder aanpassingen draaien, en zullen de wijzigingen alleen gelden voor die sectie.
  • Hmm… ik probeerde de secties ook op te nemen in de macro. Met die xecties gaat het goed met de pagina-instelling, maar bij End With stopt het gebeuren. Het vergroten van de afbeelding en de kop-en voettekst doet hij nu niet.

    Zo ziet het er nu uit:

    [code:1:43f122da49]Sub Processchema_uitvergroten()
    '
    ' Processchema_uitvergroten Macro
    ' Macro opgenomen op 9-5-2008 door Ger Bruinsma
    '
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.InsertBreak Type:=wdSectionBreakContinuous
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.InsertBreak Type:=wdSectionBreakNextPage
    Selection.MoveLeft Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    With Selection.PageSetup
    .LineNumbering.Active = False
    .Orientation = wdOrientPortrait
    .TopMargin = CentimetersToPoints(5)
    .BottomMargin = CentimetersToPoints(2.5)
    .LeftMargin = CentimetersToPoints(2.5)
    .RightMargin = CentimetersToPoints(2.5)
    .Gutter = CentimetersToPoints(0)
    .HeaderDistance = CentimetersToPoints(1.25)
    .FooterDistance = CentimetersToPoints(1.25)
    .PageWidth = CentimetersToPoints(29.7)
    .PageHeight = CentimetersToPoints(42)
    .FirstPageTray = wdPrinterDefaultBin
    .OtherPagesTray = wdPrinterDefaultBin
    .SectionStart = wdSectionContinuous
    .OddAndEvenPagesHeaderFooter = False
    .DifferentFirstPageHeaderFooter = True
    .VerticalAlignment = wdAlignVerticalTop
    .SuppressEndnotes = False
    .MirrorMargins = False
    .TwoPagesOnOne = False
    .BookFoldPrinting = False
    .BookFoldRevPrinting = False
    .BookFoldPrintingSheets = 1
    .GutterPos = wdGutterPosLeft
    End With
    Selection.InlineShapes(1).Fill.Visible = msoFalse
    Selection.InlineShapes(1).Fill.Solid
    Selection.InlineShapes(1).Fill.Transparency = 0#
    Selection.InlineShapes(1).Line.Weight = 0.75
    Selection.InlineShapes(1).Line.Transparency = 0#
    Selection.InlineShapes(1).Line.Visible = msoFalse
    Selection.InlineShapes(1).LockAspectRatio = msoTrue
    Selection.InlineShapes(1).Height = 963.8
    Selection.InlineShapes(1).Width = 703#
    Selection.InlineShapes(1).PictureFormat.Brightness = 0.5
    Selection.InlineShapes(1).PictureFormat.Contrast = 0.5
    Selection.InlineShapes(1).PictureFormat.ColorType = msoPictureAutomatic
    Selection.InlineShapes(1).PictureFormat.CropLeft = 0#
    Selection.InlineShapes(1).PictureFormat.CropRight = 0#
    Selection.InlineShapes(1).PictureFormat.CropTop = 0#
    Selection.InlineShapes(1).PictureFormat.CropBottom = 0#
    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
    Selection.HeaderFooter.LinkToPrevious = Not Selection.HeaderFooter. _
    LinkToPrevious
    ActiveWindow.ActivePane.View.PreviousHeaderFooter
    Selection.WholeStory
    Selection.Copy
    ActiveWindow.ActivePane.View.NextHeaderFooter
    Selection.PasteAndFormat (wdPasteDefault)
    If Selection.HeaderFooter.IsHeader = True Then
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
    Else
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    End If
    Selection.HeaderFooter.LinkToPrevious = Not Selection.HeaderFooter. _
    LinkToPrevious
    ActiveWindow.ActivePane.View.PreviousHeaderFooter
    Selection.WholeStory
    Selection.Copy
    ActiveWindow.ActivePane.View.NextHeaderFooter
    Selection.PasteAndFormat (wdPasteDefault)
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
    End Sub[/code:1:43f122da49]

    PS: sorry voor de lappen code, maar er is hier geen inklap-functie op het forum…
  • Met bovenstaande lukt het nu gek genoeg wel, alleen zit er nog een hik in: de afbeelding neemt ook de gehele breedte in beslag, terwijl dit toch niet de bedoeling was. Volgens mij is dat met het commando [b:125bcdaaae]LockAspectRatio = msoTrue[/b:125bcdaaae] toch ondervangen, maar zoals gezegd is VBA mijn ding niet echt en heb ik het misschien bij het verkeerde eind of op een andere plaats fout staan. Het zou m.i. in elk geval in dit stuk moeten zitten:
    [code:1:125bcdaaae]
    Selection.InlineShapes(1).Fill.Visible = msoFalse
    Selection.InlineShapes(1).Fill.Solid
    Selection.InlineShapes(1).Fill.Transparency = 0#
    Selection.InlineShapes(1).Line.Weight = 0.75
    Selection.InlineShapes(1).Line.Transparency = 0#
    Selection.InlineShapes(1).Line.Visible = msoFalse
    Selection.InlineShapes(1).LockAspectRatio = msoTrue
    Selection.InlineShapes(1).Height = 963.8
    Selection.InlineShapes(1).Width = 703#
    Selection.InlineShapes(1).PictureFormat.Brightness = 0.5
    Selection.InlineShapes(1).PictureFormat.Contrast = 0.5
    Selection.InlineShapes(1).PictureFormat.ColorType = msoPictureAutomatic
    Selection.InlineShapes(1).PictureFormat.CropLeft = 0#
    Selection.InlineShapes(1).PictureFormat.CropRight = 0#
    Selection.InlineShapes(1).PictureFormat.CropTop = 0#[/code:1:125bcdaaae]
    Hoe moet ik dit wijzigen zodat de afbeelding in hoogte wordt uitvergroot en de breedte zich daaraan aanpast?
  • [quote:b34df68c45="Ger"]
    <knip>
    [code:1:b34df68c45]<knip>
    Selection.InlineShapes(1).LockAspectRatio = msoTrue
    Selection.InlineShapes(1).Height = 963.8
    Selection.InlineShapes(1).Width = 703#
    <knip>[/code:1:b34df68c45]
    Hoe moet ik dit wijzigen zodat de afbeelding in hoogte wordt uitvergroot en de breedte zich daaraan aanpast?[/quote:b34df68c45]
    Je zet nu eerst de hoogte, en vervolgens toch nog de breedte. Doordat je de hoogte-breedte verhoudingen al hebt vastgezet met LockAspectRatio, hoef je alleen de gewenste hoogte in te stellen. De breedte wordt dan automatisch aangepast.
  • Ofwel, ik moet die regel met width weghalen begrijp ik?
  • [quote:5959d996e5="Ger"]Ofwel, ik moet die regel met width weghalen begrijp ik?[/quote:5959d996e5]Yep
  • Hmm… dat gaat ook niet helemaal goed zie ik. Als ik dat doe, wordt de alleen de hoogte veranderd en doet de breedte helemaal niets.

    Ik vraag me af, wat doet dat hekje (#) bij sommige regels? Heeft dat ermee te maken?
  • [quote:904792d211="Ger"]Hmm… dat gaat ook niet helemaal goed zie ik. Als ik dat doe, wordt de alleen de hoogte veranderd en doet de breedte helemaal niets.
    [/quote:904792d211]Vreemd, want dit heb ik even snel getest, en dat werkt bij mij wel zoals je het zou verwachten (breedte blijft in verhouding staan tot de hoogte). Kan ik zo even niks over zeggen.
    [quote:904792d211="Ger"]Ik vraag me af, wat doet dat hekje (#) bij sommige regels? Heeft dat ermee te maken?[/quote:904792d211]Dat is een verkorte notatie, om aan te geven dat het getal ervoor van het type Double is. Hier vind je wat meer shortcuts.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.