Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1520to1524
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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)
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
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
Anzeige
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
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
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
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
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

7 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige