Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Drucker auswahl

Drucker auswahl
13.06.2019 22:53:47
Michael
Guten Abend Allerseits
Benötige wieder einmal eure Hilfe. Folgenden Code habe ich (mit Hilfe von Daniel) in einer Userform zur Druckerbestimmung.
  • Private Sub CommandButton2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As  _
    _
    Single, ByVal y As Single)
    Dim strPrinter As String
    strPrinter = Application.ActivePrinter
    Dim anz As Integer
    Dim Eingabe As String
    anz = 1
    If Button = 2 Then
    Eingabe = InputBox("Anzahl?")
    If Not IsNumeric(Eingabe) Then Exit Sub
    anz = CInt(Eingabe)
    If anz = 0 Then Exit Sub
    End If
    Application.ActivePrinter = "ZDesigner S4M-203dpi ZPL auf Ne00:"
    Sheets("Sticker").PrintOut From:=1, To:=1, Copies:=anz, Collate _
    :=True, IgnorePrintAreas:=False
    Application.ActivePrinter = strPrinter
    End Sub
    

  • Der Code funktioniert auch einwandfrei. Inzwischen ist es aber so, das andere in der Firma auch meine UserForm nutzen sollen.
    Das Problem dabei ist die Druckerauswahl. Bei mir ist das fest vorgegeben.
    Was ich benötige ist ein Button o.ä. in der UserForm, der bei einem Klick darauf, alle im Netzwerk erreichbaren Drucker in einem ?Listenfeld? auflistet, und dann den gewünschten Drucker in diesen Code einfügt. Die einmal vorgenommene Auswahl soll dann aber solange erhalten bleiben, bis jemand eine neue Auswahl trifft. Den obigen Code gibt es 35x in meiner UserForm, nur mit anderen "PrintOut From To" zuweisungen.
    Es geht also um die Zeile:

  • Application.ActivePrinter = "ZDesigner S4M-203dpi ZPL auf Ne00: "

  • Diese Zeile sollte variabel vom Benutzer auszuwählen sein, ohne im Code herum zu schreiben.
    Zur Info: Bei dem oben angegebenem Drucker, handelt es sich um einen Label-Drucker für selbstklebende Etiketten. Darum auch das jeweilige zurücksetzen nach dem Druck auf den vorherigen (normalen) Drucker (strPrinter), sonst würde alles auf dem Label-Drucker gedruckt werden.
    Vielen Dank für eure Hilfe
    Michael
    Anzeige

    11
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Drucker auswahl
    14.06.2019 08:50:15
    UweD
    Hallo
    so?
    Private Sub CommandButton2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
      
        Dim strPrinter As String
        strPrinter = Application.ActivePrinter
        Dim anz As Integer
        Dim Eingabe As String
        anz = 1
        If Button = 2 Then
            Eingabe = InputBox("Anzahl?")
            If Not IsNumeric(Eingabe) Then Exit Sub
            anz = CInt(Eingabe)
            If anz = 0 Then Exit Sub
        End If
        If Application.Dialogs(xlDialogPrinterSetup).Show Then
            Sheets("Sticker").PrintOut From:=1, To:=1, Copies:=anz, Collate _
                :=True, IgnorePrintAreas:=False
             Application.ActivePrinter = strPrinter
        End If
    
    End Sub
    
    
    LG UweD
    Anzeige
    AW: Drucker auswahl
    14.06.2019 12:38:26
    Michael
    Hallo UweD
    Danke für deine Hilfe, so ganz ist es aber noch nicht das was ich suche. Wenn ich das so verwende, muss bei jedem der 35 Button der Drucker händisch ausgewählt werden. Und das jedes Mal.
    Application.Dialogs(xlDialogPrinterSetup).Show ist schon gut, aber es müsste ein ?Übergeordneter? Code sein, der durch Klick auf einen neuen Button ausgeführt wird und der dann die Druckerangabe in jedem der 35 Buttons fest überschreibt. Und erst wenn mit Application.Dialogs(xlDialogPrinterSetup).Show eine neue Auswahl erfolgt, diese wieder fest überschrieben wird.
    Viele Grüße
    Michael
    Anzeige
    AW: Drucker auswahl
    14.06.2019 13:39:33
    Werni
    Hallo Michael
    https://www.herber.de/bbs/user/130386.zip
    Du musst die Datei "clsDrucker.cls" aus dem ZIP importieren. (Ist ein Klassenmodul und darf nicht umbenannt werden)
    Dann in einem normalen Modul folgende Funktion einfügen
    Public Function Druckername(Teilname As String) As String
    Dim a As New clsDrucker
    a.TeilstringDruckername = Teilname
    Druckername = a.VollständigerName
    End Function
    

    Und dein Code CommandButton2 mit dem nachstehenden ersetzen
    Private Sub CommandButton2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As  _
    _
    _
    Single, ByVal y As Single)
    Dim strPrinter As String
    Dim Kurzpri As String
    Dim EtiPrinter As String 'Vollständiger Name des Eitketten Druckers
    Dim anz As Integer
    Dim Eingabe As String
    anz = 1
    strPrinter = Application.ActivePrinter 'Standard Drucker
    Kurzpri = "ZDesigner S4M-203dpi"       'Kurzzeichen des Etiketten Druckers
    EtiPrinter = Druckername(Kurzpri)      'Vollständiger Name des Eitketten Druckers
    Application.ActivePrinter = EtiPrinter
    If Button = 2 Then
    Eingabe = InputBox("Anzahl?")
    If Not IsNumeric(Eingabe) Then Exit Sub
    anz = CInt(Eingabe)
    If anz = 0 Then Exit Sub
    End If
    Sheets("Sticker").PrintOut From:=1, To:=1, Copies:=anz, Collate _
    :=True, IgnorePrintAreas:=False
    Application.ActivePrinter = strPrinter
    End Sub
    
    Gruss Werni
    Anzeige
    AW: Drucker auswahl
    14.06.2019 13:56:37
    Michael
    Hallo Werni
    Ich scheitere bereits an deinem ersten Satz:

  • Du musst die Datei "clsDrucker.cls" aus dem ZIP importieren. (Ist ein Klassenmodul und darf nicht umbenannt werden)

  • Was bedeutet das? Was für ein Zip?
    Gruß Michael
    AW: Drucker auswahl
    14.06.2019 14:11:36
    Werni
    Hallo Michael
    Hast du die Datei importieren können?
    Du brauchst keinen weiten Button.
    Gruss Werni
    Anzeige
    AW: Drucker auswahl
    14.06.2019 14:29:49
    Michael
    Hallo Werni
    Habe die .cls importiert, ein neues Modul angelegt, und meinen Code in der Userform geändert. Habe es auch getestet und alles läuft. Was ich aber nicht verstehe ist: Wie wird der Drucker ausgewählt auf dem gedruckt werden soll. Wenn ich meine Excel Datei an einen Kollegen weitergebe, der einen anderen Etikettendrucker hat, wie kann er dann den richtigen Drucker auswählen ohne im Code herum zu pfuschen?
    Gruß Michael
    Anzeige
    AW: Drucker auswahl
    14.06.2019 14:43:46
    Werni
    Hallo Michael
    Ich dachte, dass alle auf denselben Drucker drucken!
    Mein Vorschlag gilt natürlich nur, wenn alle denselben Drucker benötigen aber eine andere Ne: Nummer haben.
    Dann geht das nur via Application.Dialogs(xlDialogPrinterSetup).Show wie UWE beschrieben hat.
    Gruss Werni
    Anzeige
    AW: Drucker auswahl
    14.06.2019 15:01:25
    Michael
    Hallo Werni
    Sorry wenn ich mich da nicht klar ausgedrückt habe, es liegen nicht nur Wände sondern auch viele Kilometer zwischen meinen Kollegen und mir.
    Was ich brauche ist ein Button in meiner UserForm der die Application.Dialogs(xlDialogPrinterSetup).Show aufruft und die getroffene Auswahl in alle Codes
    der CommandButton(2-35)_MouseUp in der Zeile:
    Application.ActivePrinter = "ZDesigner S4M-203dpi ZPL auf Ne00:"
    mit der getroffenen Auswahl überschreibt.
    Viele Grüße
    Michael
    Anzeige
    AW: Drucker auswahl
    14.06.2019 15:02:56
    Werni
    Hallo nochmal
    Du kannst natürlich auch für jeden seinen Etikette Drucker einmalig festlegen.
    Dazu muss jeder mal den Drucker mal händisch wechseln (ohne zu drucken)
    Mit dem folgenden Code schreibst den Drucker samt Portnummer in eine Zelle (kann auch in einer ander Tabelle sein die du versteckst)
    Sub MeinDrucker()
    Tabelle10.[M1] = Application.ActivePrinter
    End Sub
    
    Diesen Code muss nur einmal ausgeführt werden.
    Dann schreibst du im Code "Drucken" nur noch Application.ActivePrinter=Tabelle10.[M1]
    Gruss Werni
    Anzeige
    AW: Drucker auswahl
    14.06.2019 21:41:03
    Michael
    Hallo Werni
    Ist zwar nicht so schick und einfach wie ich mir das, als Anfänger, vorgestellt hatte. Aber es funktioniert. Muss mir halt noch eine "Betriebsanleitung" ausdenken für Kollegen die meine UserForm nutzen wollen.
    Meinen besten Dank für deine Hilfe
    Gruß Michael
    AW: Drucker auswahl
    14.06.2019 14:07:59
    Michael
    Hallo Werni
    Sorry der Link ist mir entgangen. Kannst du mir den Code mit einfachen Worten erklären. Muss ich in meiner UserForm noch einen Button einfügen der die Änderungen dann ausführt?
    Gruß
    Michael
    Anzeige
    ;
    Anzeige
    Anzeige

    Infobox / Tutorial

    Druckerauswahl in Excel VBA optimieren


    Schritt-für-Schritt-Anleitung

    Um die Druckerauswahl in Deiner UserForm zu optimieren, folge diesen Schritten:

    1. UserForm erstellen: Öffne Excel und erstell eine UserForm, in der Du die Druckerauswahl implementieren möchtest.

    2. Button hinzufügen: Füge einen Button hinzu, der die Druckerauwahl öffnet.

    3. VBA-Code einfügen: Verwende den folgenden VBA-Code, um die Drucker auszuwählen:

      Private Sub CommandButtonDruckerAuswahl_Click()
         Dim strPrinter As String
         strPrinter = Application.ActivePrinter
      
         If Application.Dialogs(xlDialogPrinterSetup).Show Then
             ' Drucker wird ausgewählt
             Dim anz As Integer
             anz = InputBox("Anzahl?")
             If Not IsNumeric(anz) Then Exit Sub
             Sheets("Sticker").PrintOut From:=1, To:=1, Copies:=anz, Collate:=True, IgnorePrintAreas:=False
             Application.ActivePrinter = strPrinter ' Setze den ursprünglichen Drucker zurück
         End If
      End Sub
    4. Drucker speichern: Um die Druckerauswahl für mehrere Buttons zu speichern, kannst Du den Code so anpassen, dass der ausgewählte Drucker in einer Zelle gespeichert wird:

      Sub DruckerSpeichern()
         Tabelle10.[M1] = Application.ActivePrinter
      End Sub
    5. Drucken: In den anderen Druck-Buttons kannst Du dann einfach den gespeicherten Drucker verwenden:

      Application.ActivePrinter = Tabelle10.[M1]

    Häufige Fehler und Lösungen

    • Fehler: Der Drucker ist nicht verfügbar.

      • Lösung: Stelle sicher, dass der Drucker im Netzwerk erreichbar ist und überprüfe, ob der Druckertreiber korrekt installiert ist.
    • Fehler: Der Druckauftrag wird nicht ausgeführt.

      • Lösung: Überprüfe den Code auf Schreibfehler und stelle sicher, dass die richtige Anzahl an Kopien angegeben ist.
    • Fehler: Die Druckerauswahl wird bei jedem Druck erneut angefordert.

      • Lösung: Speichere den ausgewählten Drucker in einer Zelle, wie oben beschrieben, um die Auswahl zu persistieren.

    Alternative Methoden

    Eine alternative Methode zur Auswahl des Druckers ist die Verwendung eines Listenfeldes in Deiner UserForm. Du kannst alle verfügbaren Drucker auflisten und dem Benutzer die Auswahl erleichtern:

    Private Sub UserForm_Initialize()
        Dim prt As Variant
        For Each prt In Application.PrinterNames
            Me.ListBoxDrucker.AddItem prt
        Next prt
    End Sub

    Hierbei wird die Liste der Drucker in ein Listenfeld eingefügt, sodass der Benutzer den gewünschten Drucker auswählen kann.


    Praktische Beispiele

    Ein praktisches Beispiel für die Verwendung des Codes könnte sein, wenn Du Etiketten drucken möchtest und der Drucker "ZDesigner S4M-203dpi ZPL" ausgewählt werden soll. Implementiere die oben genannten Schritte und passe den Code an Deine spezifischen Anforderungen an.


    Tipps für Profis

    • Drucker-Management: Überlege, einen Button zu integrieren, der den aktuellen Drucker in einer Excel-Tabelle speichert. So können Mitarbeiter den Drucker bei Bedarf schnell ändern, ohne den Code anpassen zu müssen.

    • Benutzerfreundlichkeit: Stelle sicher, dass alle Benutzer eine kurze Anleitung erhalten, wie sie die UserForm und die Druckerauswahl nutzen können. Dies verbessert die Benutzererfahrung und reduziert mögliche Fehler.

    • Fehlerprotokollierung: Füge eine Fehlerbehandlung hinzu, um Probleme beim Drucken zu protokollieren. So kannst Du einfacher Diagnosen durchführen.


    FAQ: Häufige Fragen

    1. Wie kann ich sicherstellen, dass alle Benutzer den gleichen Drucker verwenden? Du kannst den Druckernamen in einer Zelle speichern und diesen dann in Deinen Druck-Subroutinen verwenden. So wird der Drucker für alle Benutzer einheitlich eingestellt.

    2. Was mache ich, wenn mein Drucker nicht in der Liste erscheint? Überprüfe die Druckereinstellungen in Windows und stelle sicher, dass der Drucker korrekt verbunden und installiert ist.

    3. Kann ich die Druckerauswahl in Excel VBA automatisieren? Ja, Du kannst die Druckerauswahl automatisieren, indem Du eine Kombination aus Dialogen und benutzerdefinierten Funktionen verwendest, um die Benutzerinteraktion zu minimieren.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige