• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Printmacro doet wat anders dan je verwacht

Status
Niet open voor verdere reacties.

Masjimo

Gebruiker
Lid geworden
23 dec 2010
Berichten
165
De onderstaande macro zou de gewenste print moeten opleveren;

Code:
    Sheets("Personeel").Select
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = "$A:$D"
    End With
    ActiveSheet.PageSetup.PrintArea = "WeekPersoneel"
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = "&""Tahoma,Vet""&40&K000000Weekstaat Personeel"
        .RightHeader = ""
        .LeftFooter = "&""Arial,Vet""&12&K000000&P / &[Pagina's]"
        .CenterFooter = "&12&K000000Datum: &D: Tijd: &T"
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.39)
        .RightMargin = Application.InchesToPoints(0.39)
        .TopMargin = Application.InchesToPoints(0.79)
        .BottomMargin = Application.InchesToPoints(0.59)
        .HeaderMargin = Application.InchesToPoints(0.79)
        .FooterMargin = Application.InchesToPoints(0)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 15
        .FitToPagesTall = 1
    End With
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1
    Range("A11").Select
End Sub

Mijn probleem zit in de volgende regels:

Code:
1:   .LeftFooter = "&""Arial,Vet""&12&K000000&P / &[Pagina's]"

2:   ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1

Bij regels 1) geeft deze code niet het aantal pagina's weer maar gewoon "Pagina's]"

Bij regel 2) wil ik dat de VBA dynamisch bepaald hoeveel pagina's geprint gaan worden; in dit geval 2; maar het aantal pagina's wordt bepaald door het aantal kolommen.

Hoe kan ik de macro stoppen met het begin/eindscherm voor de laatste drukmop de Print-knop?

Als ik gewoon naar m'n afdrukpagina ga werkt het wel goed.....

Wat doe ik fout?:confused:
 
Laatst bewerkt:
Iemand die al meer dan 4 jaar lid is van de club moest toch eigenlijk weten dat je code tussen code-tags moet zetten op het forum. :(
 
Masjimo,

Het eerste deel is makkelijk, de pagina's worden in een macro afgekort, pagina = P en pagina's = N
Vervang in je macro dus de eerste regel met:
Code:
.LeftFooter = "&""Arial,Vet""&12&K000000&P / &N"

De tweede vraag is een stuk lastiger, je geeft aan dat het aantal pagina's moet worden berekend uit
het aantal kolommen. Echter, de breedte van de kolommen is niet altijd even groot, soms kun je er
twintig op een pagina zetten soms maar een of twee. Als je dit wil doen zul je moeten uitzoeken hoe breed
ieder kolom is en aan de hand daarvan bepalen hoe veel pagina's je gaat printen. Is het niet veel
makkelijker om dit uit te laten zoeken door het programma?

Veel Succes.
 
Elsendoorn2134,

Bedankt voor je aanvulling.

Als je opgeeft dat de dat de schaal is; breedte 15, lengte 1 dan past het altijd qua breedte.

Op je afdrukscherm bepaald Excel zelf wat maatgevend is; de hoogte of de breedte....

Dus als de verhouding zodanig is dat er 2 pagina's in de breedte nodig zijn, worden er ook maar 2 geprint!

De andere vraag was; Hoe kan ik de macro laten stoppen als alles is ingevuld in het afdrukscherm? (dan hoef je zelf alleen nog maar op Afdrukken te klikken; om te voorkomen dat er papier "gespuugt" wordt)
 
Masjimo,

Ik begrijp je vraag niet, afdruk breedte 15 (kolommen, centimeters, inches???) en lengte 1 (regel???)

Je andere vraag hoe kan ik de macro stopen als alles in ingevuld in het afdrukscherm, snap ik ook niet.
De macro zal geen afdrukscherm laten zien en begint onmiddellijk na het doorlopen van de macro met het printen
van de opgegeven reeks, als je dit niet wilt zul je moeten opgeven dat je eerst een preview wil zien door:

Code:
 ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1 Preview=True

Veel Succes
 
Elsendoorn2134,

Bij printen kan je de afdrukbereik instellen in de zin van: 15 pagina's breed en 1 Pagina lengte...

Dus #######...... (15,1)

Lengte 2 zou zijn: ######.......
######.......


Ik heb een spreadsheet waar het aantal pagina's kan variëren; denk ik te kunnen ondervangen door de breedte op 15 te stellen(altijd voldoende).

Als ik echter de spreadsheet zover vul dat er bv. 2 pagina's in de breedte afgedrukt zouden moeten worden, pakt de VBA alleen het printen op van 1 pagina, terwijl ik in de VBA de breedte op 15 pagina's heb gesteld....

Als ikgewoon handmatig zeg : Afdrukken, Aanpassen 15 bij 1 worden er wel twee pagina's geprint.

Je aanvulling om eerst een preview te laten zien is een goed alternatief.

Bedankt!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan