• 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.

Print macro voor meerdere pagina's

Status
Niet open voor verdere reacties.

Roeldahool1

Gebruiker
Lid geworden
11 nov 2011
Berichten
52
Hallo slimmerikken!

Ik heb een excelbestand met drie tabbladen. Ik wil graag een gedeelte van de inhoud van tabblad 2 en 3 uitprinten. Beide tabbladen hebben wel een ander cellenbereik wat moet worden uitgeprint, namelijk: tabblad 2: A1:H54 en tabblad 3: A1:F42). ik wil graag dat men zelf de printerinstellingen nog kan bepalen alvorens de pagina's dubbelzijdig af te drukken.

Het mooiste zou zijn als de macro daarna terugspringt naar cel A1 van tabblad 1.

Kan dit allemaal? :confused:

Alvast bedankt!
 
Beste Roeldahool1 ;)

Weet niet of volgende gaat lukken:

Code:
Sub print()
Application.ScreenUpdating = False
    Blad2.[A1:H54].PrintOut , , 1
    Blad3.[A1:F42].PrintOut , , 1 
 
    Application.ScreenUpdating = True
    Blad1.[A1].select
End Sub

Groetjes Danny. :thumb:
 
Laatst bewerkt:
Ha Danny,

Dat brengt me al dichter bij de oplossing. Echter, de printer begint al meteen te printen bij het uitvoeren van de macro. ik krijg dus geen pop-up waarin ik de printerinstellingen kan veranderen. (het moet op geel papier en dubbelzijdig namelijk). Weet je daar wat op?

Gr, Roel
 
Beste Roeldahool1 ;)

Kan je een macro aanmaken met de macrorecorder ?

In kan niet dubbelzijdig afprinten met mijn printer, ken dus ook de functie of code niet.

Start de macro en voer de handelingen uit van je instellingen tot het printen toe.
Daarna kunnen we deze macro toevoegen aan de bestaande code.

Gropetjes Danny. :thumb:
 
Het probleem van de macrorecorder is: zodra de printpop-up verschijnt kan ik cel A1 op blad1 niet meer selecteren. Dan kan pas weer als ik het pop-upvenster sluit. Dat sluiten kan op twee manieren:
1. annuleren, maar dat annuleert ook de printopdracht in de macro
2. op OK klikken, maar dan neemt hij die ook mee in de macro, zodat bij het uitvoeren van de macro geen pop-up meer verschijnt maar hij direct gaat printen.

Het zal dus met een geschreven macro moeten worden opgelost, maar daar ben ik te veel te dom voor ;)

Ik hoef trouwens niet in de macro op te nemen dat het dubbelzijdig moet. ik wil dat de gebruiker dit zelf in kan stellen. De pop-up dus. Helpt dat...?

Gr, Roel
 
Helpt het als je deze regel voor het printen toevoegd?

Code:
Application.Dialogs(xlDialogPrint).Show
 
Sub printje()
Application.ScreenUpdating = False
Application.Dialogs(xlDialogPrint).Show
Blad2.[A1:H54].PrintOut , , 1
Blad3.[A1:F42].PrintOut , , 1

Application.ScreenUpdating = True
Blad1.[A1].Select
End Sub

Dat geeft inderdaad een pop-up, Hans. Alleen, nu komt blad 1 óók uit de printer. vreemd!
 
Vreemd,

Bij mij niet in Excel 2003.
Heb er even een Preview van gemaakt (kost je niets).
Code:
Sub printje()
 With Application
   .Dialogs(xlDialogPrint).Show
   .ScreenUpdating = False
     Blad2.[A1:H54].PrintPreview
     Blad3.[A1:F42].PrintPreview
   .Goto Blad1.[A1]
   .ScreenUpdating = True
  End With
End Sub
 
Nu zit ik achter een andere computer en daar print hij inderdaad alleen blad 2 en 3. Maar wel zonder eerst een pop-up te geven waarin ik aan kan geven dat het dubbelzijdig moet. Weet je daar toevallig ook nog de code voor?
 
Ik heb dit opgelost door de printer een 2de keer onder een andere naam te installeren en daar standaard in te stellen dat het dubbelzijdig moet en vanuit een andere papierlade.
Dan roep je deze printer aan vanuit je macro en hoef je niks meer handmatig in te stellen.
Ik heb hem in een loop zitten omdat het nummer niet op elke computer hetzelfde is.

Code:
Sub printen()
Dim myprinter As String
Dim x As Integer
myprinter = Application.ActivePrinter
x = 0
Do Until x = 9
        On Error Resume Next
        Application.ActivePrinter = "PRT-17 PCL6 Driver for Universal Print op Ne0" & x & ":"
        If Err.Number <> 0 Then
        x = x + 1
        Else: Exit Do
        End If
        Loop

    Blad2.[A1:H54].PrintOut , , 1
    Blad3.[A1:F42].PrintOut , , 1
    Blad1.[A1].Select
    Application.ActivePrinter = myprinter
End Sub

Om te kijken wat de volledige naam van jouw printer is stel je deze in windows in als standaard printer en voer je de volgende macro uit in bv een leeg bestand.

Code:
Sub printer()
[A1].Value = Application.ActivePrinter
End Sub



Niels
 
Laatst bewerkt:
Dat je dat hebt gedaan om me met mijn vraag te helpen vind ik echt fantastisch, Niels. Echt waar. Maar hier op mijn werk worden de printers geïnstalleerd door de ICT-helpdesk en die zitten aan de andere kant van het land en gaan waarschijnlijk niet de printers voor mijn projectje omzetten naar standaard dubbelzijdig. Ik heb dus echt die Pop-up nodig.

GRMBL! ik had niet verwacht dat dit zo lastig zou zijn.
 
Ik vind het leuk dat je denk dat ik dat voor jouw heb gedaan...:P
maar ik werk zelf op deze manier.

de printers geïnstalleerd door de ICT-helpdesk en die zitten aan de andere kant van het land

Ze kunnen gewoon op afstand je computer overnemen en de printer installeren dus al zitten ze aan de andere kant van de wereld dan is dat nog geen probleem.

Met de POP-UP kan ik je niet helpen, ik probeer dat juist altijd te voorkomen.

Niels
 
Oh haha, :$

Verwacht je trouwens dat het überhaupt mogelijk is? Ik kan me namelijk voorstellen dat een macro waar een menselijke handeling tussen komt niet uitvoerbaar is...? Of is het wel mogelijk om bijvoorbeeld een pauze in de macro in te voegen? zo van:

print ()
voer printcommando uit
geef pop-up printinstellingen weer
wacht tot user op OK drukt
selecteer blad1, cel A1


Of misschien is het wel mogelijk als er geen code meer volgt waarop gewacht hoeft te worden? als er dus geen cel A1 op blad1 hoeft te worden gelecteerd? om dan wel een pop-up te tonen?

Niet gehinderd door enige kennis gooi ik maar iets op :)
 
Dag Roel,

Probeer het zo eens.

Code:
Sub printje()
 With Application
  .Dialogs(xlDialogPrinterSetup).Show
   .ScreenUpdating = False
     Blad2.[A1:H54].PrintOut
     Blad3.[A1:F42].PrintOut
   .Goto Blad1.[A1]
   .ScreenUpdating = True
  End With
End Sub

Niels
 
Dat is hem ook niet helaas... Er verschijnt wel een pop-up met printerinstellingen, maar heel summier. De meest belangrijke optie voor mij (enkel-/dubbelzijdig) staat er niet bij.
 
Dag Roel,

Als je goed kijkt zie je in de pop-up ook instellen staan. linksonder!
Hierkun je alle instellingen veranderen die je wilt.

Niels
 
Ja klopt. Alleen dan krijg ik dus alleen de tabbladen [indeling] en [papier/kwaliteit]

[indeling] geeft de optie liggend / staand / liggend gedraaid en meerdere vellen op 1 pagina
[papier / kwaliteit] geeft ladeselectie en de optie zwart/wit of kleur.

Kun jij daar wel dubbelzijdig instellen?
 
Dan staat de standaarprinter niet goed.
Dan moet je eerst de standaard printer goed zetten.
Combineren gewoon even 2 macro's hier moet je wel je eigen printer in zetten.

Code:
sub printje
myprinter = Application.ActivePrinter
x = 0
Do Until x = 9
        On Error Resume Next
        Application.ActivePrinter = "PRT-17 PCL6 Driver for Universal Print op Ne0" & x & ":"
        If Err.Number <> 0 Then
        x = x + 1
        Else: Exit Do
        End If
        Loop
 With Application
  .Dialogs(xlDialogPrinterSetup).Show
   .ScreenUpdating = False
     Blad2.[A1:H54].PrintOut
     Blad3.[A1:F42].PrintOut
   .Goto Blad1.[A1]
   .ScreenUpdating = True
   .ActivePrinter=myprinter

  End With

End Sub

Niels
 
Niels, je bent een held! ik krijg nu de pop-up die ik verwachte. het enige waar ik nu nog tegenaan loop is dat dit stukje:

Blad2.[A1:H54].PrintOut
Blad3.[A1:F42].PrintOut

ervoor zorgt dat hij blad 2 en blad 3 afzonderlijk van elkaar naar de printer stuurt. ik geef in de pop-up dus aan dat het dubbelzijdig moet, maar dat heeft weinig zin. is de printopdracht te koppelen in de macro zodat ze tegelijk worden verstuurd?

Zoiets?:
Blad2.[A1:H54] and Blad3.[A1:F42] PrintOut
 
Naar mijn weten gaat dat niet omdat het 2 tabbladen zijn en dus 2 lossen opdrachten.
Wat je eventueel kunt doen is er eerst een PDF van maken, dan afdrukken en de PDF weer verwijderen.
Ik weet niet welke versie excel je hebt maar met 2007 of hoger is dit geen probleem.
er staan voorbeelden genoeg van op de site. Dan moet je wel vanuit de PDF afdrukken.

Je kunt natuurlijk ook een print-tabblad aanmaken waar je beide tabbladen samenvoegt en dan 2 bereiken van het zelfde blad afdrukt
bv Sheets("blad4").Range("A1:H5 , A56:H101").PrintOut

Niels
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan