VBA Print meerdere kopieën in 1 opdracht.

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Fietstasss
  • Registratie: Maart 2010
  • Laatst online: 22-09 07:07
Hallo medetweakers,

Ik heb een interessante uitdaging te maken in (of in ieder geval vanuit) Excel VBA.

In een programmatje welke we gebruiken om product-labels te printen heb ik een stukje VBA code zitten welke de printactie triggert. Wat er in feite gebeurt is dat na het indrukken van de 'Printknop', de code kijkt welke waarde in de cel met naam 'CopiesCell' staat, en vervolgens de sheet print (deel ervan, via print-areas) met een X aantal kopieën.

Feitelijk zijn dit dus kleine labels welke naar een Zebra Labelprinter gestuurd worden.
Deze printers zijn dusdanig snel dat ze met gemak tot zo'n 4 labels per seconde uitprinten.

Vaak zullen er ook 10 of meer labels in 1x geprint worden, echter geeft dit het probleem:

Excel VBA zend deze 'kopieën' als losse print-jobs. Wil dus zeggen dat wanneer in de 'CopiesCell' bijvoorbeeld een waarde van 40 ingevuld wordt, dat de VBA code 40 losse printjobs met 1 label maakt.
Dit heeft tot gevolg dat de printer 40 keer 'opnieuw start', terwijl wanneer deze in 1 gang 40 stuks print, dit in een vloek en scheet gebeurt is.

Ik ben op zoek naar een manier om deze losse printjobs dus te vermijden, en daadwerkelijk één printjob te krijgen met daarin het aantal kopieën verwerkt, zodat deze in 1 lange string geprint kunnen worden.
Wie kan me hieraan helpen?

Liefst gebruik ik zo min mogelijk omwegen, zeker zo min mogelijk via non-native Windows software, gezien deze excel vanaf meerdere pc's gebruikt zal gaan worden.

Ik verwacht dat 'k hier wellicht via een PDF export o.i.d. zal moeten werken, maar ben erg benieuwd of er wellicht nog andere wegen zijn, en of dat iemand me hierin kan supporten.

Summier heb ik nu onderstaande code, ter referentie:

Private Sub PRINTBUTTON_Click()
Dim PrintCopies As Integer
Dim ws As Worksheet

Set ws = ActiveWorkbook.Sheets("SheetX")

PrintCopies = ws.Range("CopiesCell").value

ws.PrintOut copies:=PrintCopies, ActivePrinter:="Printer01"
End Sub

Alvast zeer bedankt!

Alle reacties


Acties:
  • 0 Henk 'm!

  • dixet
  • Registratie: Februari 2010
  • Laatst online: 00:23
Wat gaat er precies mis met deze opdracht?
Want zo te zien stop je netjes het aantal kopieen in de parameter "Copies". Print hij hem toch maar 1x?

edit: vraag niet goed gelezen. Waarschijnlijk gaat het beter als je "Collate" op false zet.

[ Voor 101% gewijzigd door dixet op 20-02-2024 14:35 ]


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Ik heb geen ervaring met printout, maar wel met vba. Het eerste wat ik zou proberen is om je juiste printjob handmatig voor elkaar te krijgen. Lukt dat, dan kan je daar een macro van maken. Kijk dus eens naar de opties in je printscherm (met name collate, zoals hierboven gezegd is).

When life gives you lemons, start a battery factory