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

Makro einen bestimmten Drucker zuordnen?

Forumthread: Makro einen bestimmten Drucker zuordnen?

Makro einen bestimmten Drucker zuordnen?
03.05.2014 11:37:49
jonas
Servus Leute,
ich hab ein kleines Problem und hoffe jemand kann mir helfen.
Ich habe ein Makro mit dem ich einen Druckbereich drucken möchte, allerdings habe ich zwei unterschiedliche Drucker. Wenn ich auf das Makro klicke, wird immer der Standartdrucker ausgewählt, ich bräuchte aber den anderen.
Wie muss ich den Code schreiben damit das Funktioniert?
Standartdrucker: Lexmark Universal XL
Drucker der angesteuert werden soll: Epson LQ 680 ESC/ P 2
Der derzeitige Code sieht so aus:
Sub Privatwäsche15()
' Privatwäsche15 Makro
Range("A3:C31").Select
ActiveSheet.PageSetup.PrintArea = "$A$3:$C$31"
End Sub

Vielen Dank im Voraus!

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro einen bestimmten Drucker zuordnen?
03.05.2014 11:43:10
Hajo_Zi

Option Explicit
Sub Faxen()
Dim savPrinter As String
savPrinter = ActivePrinter      ' aktuellen Drucker auslesen
ActivePrinter = "WinFax Pro 9.0"    ' anderen Drucker einstellen
ActiveSheet.PrintOut
ActivePrinter = savPrinter              ' Drucker wieder zurückstellen
End Sub

Anzeige
AW: Makro einen bestimmten Drucker zuordnen?
03.05.2014 12:20:15
jonas
Hey danke für die schnelle Antwort Hajo_Zi.
Muss ich den Code durch deinen ersetzten oder hinzufügen?
Wie und wo lese ich den Drucker aus?
mfg

AW: Makro einen bestimmten Drucker zuordnen?
03.05.2014 12:23:52
Hajo_Zi
ein select ist nur notwendig wenn Du den markierten Bereich Drucken willst, was mein Makro nicht macht.
Ich schätze ersetzen und Deinen Drucker eintragen.
Gruß Hajo

Anzeige
AW: Makro einen bestimmten Drucker zuordnen?
03.05.2014 12:25:45
Tino
Hallo,
versuch mal so.
Sub Privatwäsche15()
Dim aktPrinter$, newPrinter$
aktPrinter = Application.ActivePrinter
newPrinter = Find_Drucker("Epson LQ 680 ESC/ P 2*")
If newPrinter <> "" Then
    Application.ActivePrinter = newPrinter
        DoEvents
    ActiveSheet.PageSetup.PrintArea = "$A$3:$C$31"
        DoEvents
    Application.ActivePrinter = aktPrinter
Else
    MsgBox "Drucker Epson LQ 680 ESC/ P 2 nicht gefunden"
End If
End Sub

Function Find_Drucker(LikeName$) As String
Const HKEY_current_user = &H80000001
Dim oReg As Object, i As Long
Dim strKeyPath As String, strValue As String, msg As String
Dim arrPrinter As Variant
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\Devices"
oReg.EnumValues HKEY_current_user, strKeyPath, arrPrinter
For i = 0 To Ubound(arrPrinter)
    If arrPrinter(i) Like LikeName Then
        oReg.GetStringValue HKEY_current_user, strKeyPath, arrPrinter(i), strValue
        Find_Drucker = arrPrinter(i) & Replace(strValue, "winspool,", " auf ")
        Exit Function
    End If
Next
Set oReg = Nothing
End Function
Gruß Tino

Anzeige
AW: Makro einen bestimmten Drucker zuordnen?
03.05.2014 12:44:22
jonas
Hab jetzt den Code eingefügt, passiert aber nichts :-)
Sub Privatwäsche15()
Dim aktPrinter$, newPrinter$
aktPrinter = Application.ActivePrinter
newPrinter = Find_Drucker("Epson LQ-680 ESC/P 2*")
If newPrinter  "" Then
Application.ActivePrinter = newPrinter
DoEvents
ActiveSheet.PageSetup.PrintArea = "$A$3:$C$31"
DoEvents
Application.ActivePrinter = aktPrinter
Else
MsgBox "Drucker Epson LQ-680 ESC/P 2 nicht gefunden"
End If
End Sub

Function Find_Drucker(LikeName$) As String
Const HKEY_current_user = &H80000001
Dim oReg As Object, i As Long
Dim strKeyPath As String, strValue As String, msg As String
Dim arrPrinter As Variant
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\Devices"
oReg.EnumValues HKEY_current_user, strKeyPath, arrPrinter
For i = 0 To UBound(arrPrinter)
If arrPrinter(i) Like LikeName Then
oReg.GetStringValue HKEY_current_user, strKeyPath, arrPrinter(i), strValue
Find_Drucker = arrPrinter(i) & Replace(strValue, "winspool,", " auf ")
Exit Function
End If
Next
Set oReg = Nothing
End Function

Anzeige
AW: Makro einen bestimmten Drucker zuordnen?
03.05.2014 12:49:49
Tino
Hallo,
teste mal welcher Drucker gezeigt wird.
Sub Privatwäsche15()
Dim aktPrinter$, newPrinter$
aktPrinter = Application.ActivePrinter
newPrinter = Find_Drucker("Epson LQ-680 ESC/P 2*")
If newPrinter  "" Then
msgbox newPrinter
Application.ActivePrinter = newPrinter
DoEvents
ActiveSheet.PageSetup.PrintArea = "$A$3:$C$31"
DoEvents
Application.ActivePrinter = aktPrinter
Else
MsgBox "Drucker Epson LQ-680 ESC/P 2 nicht gefunden"
End If
End Sub
Gruß Tino

Anzeige
die Code-Zeile zum drucken fehlt!
03.05.2014 13:02:30
Tino
Hallo,
da fehlt noch die Zeile zum ausdrucken.
Sub Privatwäsche15()
Dim aktPrinter$, newPrinter$
aktPrinter = Application.ActivePrinter
newPrinter = Find_Drucker("Epson LQ-680 ESC/P 2*")
If newPrinter  "" Then
Application.ActivePrinter = newPrinter
DoEvents
ActiveSheet.PageSetup.PrintArea = "$A$3:$C$31"
ActiveSheet.PrintOut
DoEvents
Application.ActivePrinter = aktPrinter
Else
MsgBox "Drucker Epson LQ-680 ESC/P 2 nicht gefunden"
End If
End Sub
Gruß Tino

Anzeige
AW: die Code-Zeile zum drucken fehlt!
03.05.2014 13:10:39
bauer
Hab ich jetzt gemacht, dann kommt die Meldung.
LQ-680 ESC/P 2 auf LPT1:
Dann auf OK geklickt,
aber nichts passiert?

lade mal ein Beispiel hoch oT.
03.05.2014 13:12:26
Tino

AW: lade mal ein Beispiel hoch oT.
03.05.2014 13:18:22
bauer
Userbild

Anzeige
ich meine kein Bild eine Excel-Datei oT.
03.05.2014 13:37:21
Tino

AW: ich meine kein Bild eine Excel-Datei oT.
03.05.2014 13:52:19
jonas
Habs Problem gelöst.
Danke für eure Hilfe!!!
mfg
;
Anzeige
Anzeige

Infobox / Tutorial

Makro einen bestimmten Drucker zuordnen


Schritt-für-Schritt-Anleitung

Um in Excel ein Makro zu erstellen, das einen bestimmten Drucker zuordnet, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" und wähle "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:

    Sub Privatwäsche15()
       Dim aktPrinter As String, newPrinter As String
       aktPrinter = Application.ActivePrinter
       newPrinter = Find_Drucker("Epson LQ-680 ESC/P 2*")
    
       If newPrinter <> "" Then
           Application.ActivePrinter = newPrinter
           ActiveSheet.PageSetup.PrintArea = "$A$3:$C$31"
           ActiveSheet.PrintOut
           Application.ActivePrinter = aktPrinter
       Else
           MsgBox "Drucker Epson LQ-680 ESC/P 2 nicht gefunden"
       End If
    End Sub
    
    Function Find_Drucker(LikeName As String) As String
       Const HKEY_current_user = &H80000001
       Dim oReg As Object, i As Long
       Dim strKeyPath As String, strValue As String
       Dim arrPrinter As Variant
    
       Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
       strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\Devices"
       oReg.EnumValues HKEY_current_user, strKeyPath, arrPrinter
    
       For i = 0 To UBound(arrPrinter)
           If arrPrinter(i) Like LikeName Then
               oReg.GetStringValue HKEY_current_user, strKeyPath, arrPrinter(i), strValue
               Find_Drucker = arrPrinter(i) & Replace(strValue, "winspool,", " auf ")
               Exit Function
           End If
       Next
       Set oReg = Nothing
    End Function
  4. Speichere dein Makro und schließe den VBA-Editor.

  5. Führe das Makro aus:

    • Du kannst das Makro über die Registerkarte "Entwicklertools" oder mit der Tastenkombination ALT + F8 ausführen.

Häufige Fehler und Lösungen

  • Fehler: "Drucker nicht gefunden"

    • Stelle sicher, dass der Druckername im Code genau mit dem Namen des installierten Druckers übereinstimmt. Achte auf Leerzeichen und Groß-/Kleinschreibung.
  • Das Makro druckt nicht

    • Überprüfe, ob der Druckbereich korrekt festgelegt ist. Du kannst den Druckbereich in ActiveSheet.PageSetup.PrintArea anpassen.
  • Der Standarddrucker wird weiterhin verwendet

    • Vergewissere dich, dass der Code, der den Drucker wechselt, tatsächlich ausgeführt wird. Füge Debugging-Statements hinzu, um zu sehen, ob der neue Drucker gesetzt wird.

Alternative Methoden

Wenn du den Drucker nicht über VBA auswählen möchtest, kannst du die Druckereinstellungen auch manuell in Excel festlegen:

  1. Gehe zu "Datei" > "Drucken".
  2. Wähle den gewünschten Drucker aus der Dropdown-Liste aus.
  3. Klicke auf "Drucken".

Eine andere Möglichkeit ist die Verwendung von Excel-Druckvorlagen, bei denen du das gewünschte Druckerprofil speichern kannst.


Praktische Beispiele

Hier sind einige Anwendungsbeispiele für die Verwendung des Codes:

  • Drucke einen bestimmten Bericht auf einen speziellen Drucker: Du kannst das Makro anpassen, um unterschiedliche Berichte je nach Bedarf an verschiedene Drucker zu senden.

  • Automatisiere den Druckprozess: Erstelle ein Makro, das regelmäßig Druckaufträge an einen bestimmten Drucker sendet, z. B. für wöchentliche Statusberichte.


Tipps für Profis

  • Verwende DoEvents, um sicherzustellen, dass Excel Zeit hat, die Druckaufträge korrekt zu verarbeiten, insbesondere bei großen Dokumenten.
  • Halte deinen Code modular, indem du Funktionen schreibst, die wiederverwendbar sind, um die Wartbarkeit zu erhöhen.
  • Teste deine Makros in einer Sicheren Umgebung, um sicherzustellen, dass sie wie gewünscht funktionieren, ohne wichtige Daten zu verlieren.

FAQ: Häufige Fragen

1. Kann ich mehrere Drucker in einem Makro verwenden? Ja, du kannst den Code erweitern, um mehrere Drucker auszuwählen, indem du Bedingungen hinzufügst, die den richtigen Drucker basierend auf deinem Bedarf auswählen.

2. Muss ich den Drucker jedes Mal neu festlegen? Nicht unbedingt. Solange der Drucker aktiv ist und in deinem System erkannt wird, kannst du den Drucker einmal festlegen und dann den Druckbefehl verwenden.

3. Was mache ich, wenn mein Drucker nicht in der Liste angezeigt wird? Stelle sicher, dass der Drucker installiert und als aktiv markiert ist. Gehe zu den Druckereinstellungen deines Betriebssystems und überprüfe, ob der Drucker korrekt eingerichtet ist.

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