Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Farbig/SW Druck per Button

Farbig/SW Druck per Button
10.11.2016 09:31:34
Gunter
Hallo Zusammen
Ein Tabellenblatt soll je nach Bedarf farbig oder s/w ausgedruckt werden. Um das ganze für den User einfacher zu machen, wäre es schön das per VBA mit zwei Buttons auf dem Tabellenblatt zu lösen. Per Makrorecorder habe ich folgendes erhalten:
Sub DruckSW()
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End Sub

Damit funktioniert der Druck entsprechend der voreingestellten Druckereinstellungen. Leider funktioniert es mit dem Makrorecorder nicht die Druckerumstellung von s/w auf Farbe und umgekehrt aufzuzeichnen.
Gibt es eine Möglichkeit das per VBA-Option zu realisieren?
Für zweckdienliche Hinweise herzlichen Dank.
Gruss
Gunter
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Farbig/SW Druck per Button
10.11.2016 09:52:34
Dieter(Drummer)
Hallo Günter,
probiere mal (aus: dem Interntet - http://www.ms-office-forum.net/forum/showthread.php?t=225494:)
.BlackAndWhite = True 'für schwarzweis
und
.BlackAndWhite = false 'für farbe

Code:
Sub so_vieleicht()
With ActiveSheet
.PageSetup.BlackAndWhite = True
.SelectedSheets.PrintOut Copies:=1, Collate:=True
.PageSetup.BlackAndWhite = False
.SelectedSheets.PrintOut Copies:=1, Collate:=False
End With
End Sub

Gruß, Dieter(Drummer)
Anzeige
AW: Farbig/SW Druck per Button
10.11.2016 10:14:58
Gunter
Hallo Dieter
Ja laut dem Link von dir sollte es so funktionieren, aber ich bekomme die Fehlermeldung "Objekt unterstützt diese Eigenschaft oder Methode nicht", wenn der Debugger zu:
.SelectedSheets.PrintOut Copies:=1, Collate:=True
kommt.
Gruss
Gunter
AW: Farbig/SW Druck per Button
10.11.2016 10:44:33
Dieter(Drummer)
Hallo Gunter,
da kann dir dann nur ein Spezialist aus den Forum wieter helfen.
Gruß, Dieter(Drummer)
Anzeige
AW: Farbig/SW Druck per Button
10.11.2016 10:51:24
Michael
Hallo Gunter,
ich hatte ein ähnliches Problem; dazu musste ich die IP-Anschrift des Farbdruckers in den Code einbinden.
Zum Auslesen welcher Drucker welche IP-Anschrift oder welchen Namen hat, ist folgender Code sehr gut (Ergebnis wird im Fenster Direktbereich angezeigt):
Sub ListAllPrinters()
Dim WshNetwork As Object, oPrinters As Object, i%
Set WshNetwork = CreateObject("WScript.Network")
Set oPrinters = WshNetwork.EnumPrinterConnections
For i = 0 To oPrinters.Count - 1 Step 2
Debug.Print oPrinters.Item(i + 1) & " an " & oPrinters.Item(i)
Next
Set WshNetwork = Nothing
End Sub
Für den Ausdruck auf den Farbdrucker benutze ich dann folgenden Code (hier wurde mir in einem anderen Forum sehr gut geholfen):
Public Function GetPrinterName(sIPAdress 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
Dim oWSN As Object
Dim oPrinter As Object
Dim sPrinterName As String
Dim sResult As String
Set oWSN = CreateObject("WScript.Network")
Set oPrinter = oWSN.EnumPrinterConnections
For i = 0 To oPrinter.Count - 1 Step 2
If oPrinter.Item(i) = sIPAdress Then
sPrinterName = oPrinter.Item(i + 1)
Exit For
End If
Next
If sPrinterName = "" Then Exit Function
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) = sPrinterName Then
oReg.GetStringValue HKEY_current_user, strKeyPath, arrPrinter(i), sResult
sResult = arrPrinter(i) & Replace(sResult, "winspool,", " auf ")
Exit For
End If
Next
GetPrinterName = sResult
Set oReg = Nothing
End Function
Sub Farbdruck()
Dim sOldPrinter As String
Dim sNewPrinter As String
sOldPrinter = Application.ActivePrinter
sNewPrinter = GetPrinterName("5.4.5.194")
If Not sNewPrinter = "" Then
Application.ActivePrinter = sNewPrinter
'Hier wird dann entsprechend gedruckt
Worksheets("Testseite").PrintOut
'Zurückstellen auf Standarddrucker
Application.ActivePrinter = sOldPrinter
Else
MsgBox ("Achtung! Dieser Drucker existiert nicht!")
End If
Sheets("Daten").Select
End Sub

Vielleicht kannst du damit was anfangen.
Gruß
Michael
Anzeige
AW: Farbig/SW Druck per Button
10.11.2016 11:40:27
Gunter
Hallo Michael
Vielen Dank für deine Hilfe.
Die IP Adresse des Druckers konnte ich mit Sub ListAllPrinters() auslesen. Ich habe aber nur einen Drucker bei dem das Profil entsprechend geändert wird, die IP ist, ob farbig oder s/w die gleiche.
Gruss
Gunter
AW: Farbig/SW Druck per Button
10.11.2016 12:57:32
Michael
Hallo Gunter,
meiner Meinung kannst du dann dein Problem nur lösen, indem du dir einen zweiten Druckertreiber mit Voreinstellung -Druck Schwarz- einrichtest oder einrichten lässt.
Gruß
Michael
Anzeige
AW: Farbig/SW Druck per Button
10.11.2016 13:50:44
Gunter
Hallo Michael
Vom Prinzip existiert das ja schon, bloss das die beiden Drucker unter der gleichen IP laufen. Die beiden Drucker farbig und s/w werden unter Drucken -- Drucker aufgeführt. Ich kann sie nur nicht im VBA ansprechen.
Gruss
Gunter
AW: Farbig/SW Druck per Button
10.11.2016 14:23:19
Michael
Hallo Gunter,
ich nehme an, dass die beiden "Drucker" verschiedene Namen haben.
Wenn ja, probiere mal folgendes aus:
Sub Druck_alt()
Dim WshNetwork As Object
Const Drucker2 As String = "DR-111 Raum 120 Farbe" ' Name des Druckers
Sheets("Testseite").Select
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.SetDefaultPrinter Drucker2
ActiveSheet.PrintOut
Sheets("Daten").Select
End Sub
Ansonsten teile mal mit, wie die beiden Drucker bei dir erscheinen.
Gruß
Michael
Anzeige
AW: Farbig/SW Druck per Button
10.11.2016 14:37:34
Gunter
Hallo Michael
Die Drucker erscheinen bei der Abfrage die du in deinem ersten Post hattest so:
Canon iR-ADV C5030/5035 PS3 an 10.164.16.49
An OneNote 2013 senden an nul:
\\tpcs-lei-vprnt01.mediano.int\tpcpx-lei-0284-sw an tpcpx-lei-0284-sw
\\tpcs-lei-vprnt01.mediano.int\tpcpx-lei-0284-co an tpcpx-lei-0284-co
Wenn ich die Namen eingebe dann druckt es, aber leider so wie es voreingestellt ist!?
Gruss
Gunter
Anzeige
AW: Farbig/SW Druck per Button
10.11.2016 14:59:46
Michael
Hallo Gunter,
willst du den Canon oder einen von den tpcpx - Drucker benutzen?
Gruß
Michael
AW: Farbig/SW Druck per Button
10.11.2016 15:43:50
Gunter
Hallo Michael
Der Canon mit der IP 10.164.16.49 ist tatsächlich der physische Netzwerkdrucker. Die beiden tpcs sind virtuelle Drucker, einmal konfiguriert als s/w und einmal als farbig. Erkennbar an der Bezeichnung am Ende "-sw" und "-co".
Wenn ich aus Excel drucken will, dann wähle ich entweder den "-sw" für s/w-Druck, oder den "-co" für Farbige drucke.
Gruss
Gunter
Anzeige
AW: Farbig/SW Druck per Button
10.11.2016 15:53:01
Michael
Hallo Gunter,
mal auf die Schnelle (kurz vor Feierabend).
Wenn es machbar ist (kenne den Drucker nicht):
Richte dir den Canon nochmals als physischer Drucker ein und richte ihn so ein, dass Farbe als Standard ist.
Vielleicht geht es so.
Gruß und noch einen schönen Tag
Michael
Anzeige
AW: Farbig/SW Druck per Button
10.11.2016 16:11:55
Gunter
Hallo Michael
Vielen Dank für deine Hilfe, bei mir ist auch gleich Feierabend.
Den Drucker kann ich schon als Standard farbig definieren, aber wie bekomme ich ihn dann per VBA-Befehl nach s/w und gegebenenfalls auch wieder zurück?
Nochmals Danke und einen schönen Abend!
Gruss
Gunter
Anzeige
AW: Farbig/SW Druck per Button
11.11.2016 09:09:28
Michael
Guten Morgen Gunter,
ob Excel mit den virtuellen Druckern was anfangen kann, kann ich dir nicht sagen.
Meiner Meinung muss du den Canon ein zweites Mal einbinden unter einem anderen Namen (z.B.: Canon SW).
Das müsste lt. unserem IT-Fachmann auch ohne Probleme machbar sein.
Problem könnte die Standardeinrichtung beim Drucker machen.
Du musst ja einmal Standard: Farbe und ein zweites Mal Standard: SW einrichten.
Das kann wohl nicht jeder Drucker. Mal ausprobieren.
Wenn erfolgreich, dann versuche mal diesen Code:
Sub Testdruck()
Application.ActivePrinter = "Canon_SW" 'Name des Druckers SW
Sheets("Notrufe_negativ").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Application.ActivePrinter = "Canon_Colour" ' Name des Druckers Farbe
End Sub

Klappt es denn nicht wenn du bei dem obigen Code in der Zeile:
Application.ActivePrinter = "Canon_SW" 'Name des Druckers Farbe
den virtuellen SW - Drucker einbindest.
Gruß
Michael
Anzeige
AW: Farbig/SW Druck per Button
11.11.2016 10:37:51
Gunter
Hallo Michael
Neuer Tag, neues Glück.
Ich bekomme einen Laufzeitfehler 1004 Anwendungs- oder objektdefinierter Fehler, auch wenn ich die IP-Adresse des Druckers eingebe.
Mal noch was prinzipielles, man könnte ja auch als Drucker den PDF-Drucker auswählen und den Canon als Standarddrucker. Wie kann man denn zwischen diesen wechseln?
Gruss
Gunter
Anzeige
AW: Farbig/SW Druck per Button
11.11.2016 11:08:10
Gunter
Hallo Michael
Ich habe hier:
https://dbwiki.net/wiki/VBA_Tipp:_Standarddrucker_auslesen_und_%C3%A4ndern
diese Funktionen
Private Declare Function GetDefaultPrinter Lib "winspool.drv" Alias "GetDefaultPrinterA" ( _
ByVal pszBuffer As String, _
ByRef pcchBuffer As Long _
) As Long
Private Declare Function SetDefaultPrinter Lib "winspool.drv" Alias "SetDefaultPrinterA" ( _
ByVal pszPrinter As String _
) As Long
Public Function Standarddruckername()
'Windows-Standarddruckernamen auslesen
'Quelle: http://www.dbwiki.net/
Dim strName As String
Dim lngZeichen As Long
Dim lngret As Long
lngret = GetDefaultPrinter(strName, lngZeichen)
strName = String(lngZeichen, 0)
lngret = GetDefaultPrinter(strName, lngZeichen)
Standarddruckername = Left(strName, lngZeichen - 1)
End Function

Public Function StandarddruckerÄndern(ByVal Druckername As String) As Boolean
'Windows-Standarddrucker ändern
'Quelle: http://www.dbwiki.net/
StandarddruckerÄndern = CBool(SetDefaultPrinter(Druckername & vbNullChar))
End Function

gefunden, mit denen das Problem zu lösen sein sollte. Leider sind meine VBA Kenntnisse so eingerostet, dass ich nicht weiss, wie das ganze einzubinden ist. Daher wäre ich froh du könntest mir damit helfen.
Gruss
Gunter
Anzeige
AW: Farbig/SW Druck per Button
11.11.2016 11:50:57
Michael
Hallo Gunter,
dieser Code bezieht sich auf Access und nicht auf Excel.
Warum du einen Laufzeitfehler bekommst, kann ich nicht nachvollziehen.
Ich habe noch eine letzte Idee. Bei dem unten aufgeführten Code (gefunden im Internet) erscheint das Druckerauswahlfenster. Der User sucht sich den passenden Drucker aus, das Tabellenblatt wird ausgedruckt und der Standarddrucker wird wieder eingerichtet.
Und dafür benötigst du auch nur ein Button.
Sub ListAllPrinters_2()
ST_DRUCKER = Application.ActivePrinter
Druckerwahl = Application.Dialogs(xlDialogPrinterSetup).Show
If Druckerwahl = True Then
ActiveSheet.PrintOut
End If
'setzt Drucker wieder auf den "alten" zurück
Application.ActivePrinter = ST_DRUCKER
End Sub
Gruß
Michael
Anzeige
AW: Farbig/SW Druck per Button
11.11.2016 12:55:11
Gunter
Hallo Michael
Das funktioniert jetzt auch bei mir ohne Fehlermeldung. Ist zwar nicht ganz so komfortabel wie ich es mir ursprünglich gedacht hatte, aber damit kann ich gut leben.
Vielen Dank!
Gruss
Gunter

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Farbig oder Schwarz-Weiß Drucken in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um in Excel per Button zwischen farbigem und Schwarz-Weiß-Druck umzuschalten, kannst du folgende Schritte befolgen:

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (dein Dokument)" > Einfügen > Modul.
  3. Kopiere und füge den folgenden VBA-Code ein:
Sub DruckSW()
    With ActiveSheet
        .PageSetup.BlackAndWhite = True
        .PrintOut Copies:=1, Collate:=True
        .PageSetup.BlackAndWhite = False
        .PrintOut Copies:=1, Collate:=True
    End With
End Sub
  1. Füge einen Button in dein Excel-Blatt ein: Wechsle zurück zu Excel, gehe zu "Entwicklertools" > "Einfügen" > "Button (Formularsteuerelement)".
  2. Weise dem Button das Makro zu: Wähle das Makro DruckSW aus.

Jetzt kannst du über den Button zwischen farbigem und Schwarz-Weiß-Druck wechseln, indem du die Druckeinstellungen in den Excel-Optionen anpasst.


Häufige Fehler und Lösungen

  • Fehlermeldung: "Objekt unterstützt diese Eigenschaft oder Methode nicht"
    Dies könnte bedeuten, dass dein Drucker nicht richtig erkannt wird. Stelle sicher, dass der Drucker korrekt installiert und als Standarddrucker festgelegt ist.

  • Drucker druckt nicht farbig in Windows 11
    Überprüfe die Druckereinstellungen in der Systemsteuerung. Stelle sicher, dass der Drucker auf "Farbe" eingestellt ist.


Alternative Methoden

Eine alternative Methode, um zwischen farbigem und Schwarz-Weiß-Druck zu wechseln, ist die Verwendung eines zweiten Druckertreibers mit unterschiedlichen Voreinstellungen. Du kannst auch die IP-Adresse des Druckers im VBA-Code einbinden, um den richtigen Drucker auszuwählen.

Hier ist ein Beispiel, um den Drucker über die IP-Adresse zu steuern:

Public Function GetPrinterName(sIPAdress As String) As String
    'Hier kannst du den Code zum Abrufen des Druckernamens basierend auf der IP-Adresse einfügen
End Function

Sub Farbdruck()
    Dim sOldPrinter As String
    Dim sNewPrinter As String
    sOldPrinter = Application.ActivePrinter
    sNewPrinter = GetPrinterName("5.4.5.194")

    If Not sNewPrinter = "" Then
        Application.ActivePrinter = sNewPrinter
        Worksheets("Testseite").PrintOut
        Application.ActivePrinter = sOldPrinter
    Else
        MsgBox ("Achtung! Dieser Drucker existiert nicht!")
    End If
End Sub

Praktische Beispiele

  • Drucken einer Testseite: Du kannst eine Testseite in Farbe oder Schwarz-Weiß drucken, indem du die entsprechenden Druckereinstellungen in deinem Excel-Sheet anpasst.
Sub Testdruck()
    Application.ActivePrinter = "Canon_SW" ' Name des Druckers SW
    ActiveSheet.PrintOut Copies:=1
    Application.ActivePrinter = "Canon_Colour" ' Name des Druckers Farbe
End Sub

Tipps für Profis

  • Standarddrucker ändern: Du kannst Funktionen erstellen, um den Standarddrucker in Windows zu ändern. Dies kann nützlich sein, wenn dein Drucker immer wieder auf die falsche Einstellung zurückgesetzt wird.

  • Benutzeroberfläche verbessern: Verwende Dialogfelder, um den Benutzer zur Auswahl des Druckers aufzufordern. So kannst du die Benutzererfahrung optimieren.

Sub ListAllPrinters_2()
    Dim ST_DRUCKER As String
    ST_DRUCKER = Application.ActivePrinter
    If Application.Dialogs(xlDialogPrinterSetup).Show Then
        ActiveSheet.PrintOut
    End If
    Application.ActivePrinter = ST_DRUCKER
End Sub

FAQ: Häufige Fragen

1. Wie kann ich den Drucker für farbiges Drucken einstellen?
Du kannst die Druckereinstellungen in Windows anpassen, indem du mit der rechten Maustaste auf den Drucker klickst und "Druckeinstellungen" auswählst. Dort kannst du "Farbe" als Standard festlegen.

2. Was tun, wenn Excel nicht farbig druckt?
Überprüfe die Druckereinstellungen sowohl in Excel als auch in Windows. Stelle sicher, dass der richtige Drucker ausgewählt ist und die Farbe als Druckoption aktiviert ist.

3. Kann ich einen Drucker per VBA auswählen?
Ja, du kannst den Drucker mit VBA steuern, indem du den Namen oder die IP-Adresse des Druckers im Code angibst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige