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

Printer lade selecteren in code

Berry1978

Gebruiker
Lid geworden
25 jun 2019
Berichten
45
Goedemorgen, ik heb al gezocht op het forum maar niet gevonden wat ik zou willen. Als dit enigzins al mogelijkheid is.

Bijgevoegd een voorbeeld bestand.

Is het mogelijk om in de code de papier lade toe te voegen?
Dus als ik op de knop AFDRUKKEN A4 formaat Main Tray klik dat de printer de Main Tray gebruikt en als ik op de knop AFDRUKKEN A4 formaat met 2x A5 sticker Tray 2 klik dat de printer Tray 2 gebruikt.

Nu kan ik beide sjablonen wel op een aparte sheet maken en zo instellen bij printereigenschappen dat de ene sheet Main Tray gebruikt en de andere sheet Tray 2 maar beide sjablonen staan op een sheet en dat wil ik graag zo houden.

Met vriendelijke groet, Berry.
 

Bijlagen

Voor zover ik weet bestaat er geen code om de printerlade te selecteren in VBA.
Wat je wel kan doen is in Windows een extra printer toevoegen en bij de eigenschappen de ene instellen om de Main Tray te gebruiken en de andere instellen om Tray1 te gebruiken.
In de code kan je dan via ActivePrinter verwijzen naar de ene of de andere naargelang wat je wil afdrukken.
 
Met sendkeys is er wat mogelijk. Maar is niet de mooiste oplossing
 
In #1 vroeg je om code.
Voor een HP compatible printer kan je eerst de PCL code voor de gewenste lade naar de printer sturen.
Dit in een Module:
Code:
Declare PtrSafe Function apiShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
    ByVal hwnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) _
As Long

Public Sub PrintFile(ByVal strPathAndFilename As String)
    Call apiShellExecute(Application.hwnd, "print", strPathAndFilename, vbNullString, vbNullString, 0)
End Sub

Sub Afdrukken()
    Lade1 = Chr(27) & "&l4H"
    Lade2 = Chr(27) & "&l1H"
    Lade3 = Chr(27) & "&l5H"
    Lade4 = Chr(27) & "&l8H"
    Lade5 = Chr(27) & "&l9H"

    TrayFile = Environ("Temp") & "\lade.txt"
    If Dir(TrayFile) <> "" Then Kill TrayFile
    Open TrayFile For Output As #1
    Print #1, Lade1 'Plaats hier de variabele voor de gewenste lade.
    Close #1
    PrintFile TrayFile
    ActiveSheet.PrintOut
End Sub
Voor gebruik in een 32-bit Office installatie verwijder je het woord PtrSafe.
Voor het afdrukken gebruik je dan de Sub Afdrukken.
Die ActiveSheet.PrintOut kan je wijzigen door hetgeen je wilt afdrukken.
De als standaard ingestelde printer wordt gebruikt.
Zo kan je dus eventueel tijdens het doen van meerdere print opdrachten makkelijk wisselen van lade.
 
Laatst bewerkt:
Allemaal vriendelijk bedankt voor de reacties.

@edmoor, ik ga hier vanavond eens op m'n gemak voor zitten en proberen.
Vriendelijk bedankt!
 
Terug
Bovenaan Onderaan