Anzeige
Archiv - Navigation
996to1000
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

"Application.ActivePrinter"-Problem

"Application.ActivePrinter"-Problem
31.07.2008 17:21:00
Bernd
Hallo,
Dank dieses Forums habe ich eine EINGABEMASKE in Betrieb genommen, mit welcher ich Angebote, Auftragsbestätigungen und Rechnungen erstellen und ausdrucken kann. Erstellte Angebote, Aufträge oder Rechnungen werden von drei verschiedenen PCs erstellt, gespeichert, gedruckt etc.
An allen PCs ist der gleiche LowBudget-Drucker angeschlossen ... der Samsung CLP-300.
An zwei Rechner funktioniert nachstehende Befehlszeile:
Application.ActivePrinter = "Samsung CLP-300 Series auf Ne00:"
An einem Rechner nicht:
Es müßte dort "Samsung CLP-300 Series auf Ne04" heißen (per Makro-Recorder ermittelt).
Was gibt es da für Möglichkeiten, so daß meine Eingabemaske.xls IMMER auf den direkt angeschlossenen Standard-Drucker eines jeden PCs druckt?
Es grüßt
Bernd Junker
PS 1: Hier mal ein Auszug des Moduls "DRUCKEN", welches per Button gestartet wird:

Sub Drucken()
Dim objWks As Worksheet, strAktiverDrucker As String, objZelleKopie As Range
Dim lngFarbeKopie As Long
On Error GoTo Fehler
Set objWks = Worksheets("Angebot")
Set objZelleKopie = objWks.Range("F26") 'Zelle zur Kennzeichnung der Kopie
lngFarbeKopie = objZelleKopie.Interior.ColorIndex 'Originalfarbe merken
'Drucken
strAktiverDrucker = Application.ActivePrinter 'aktiven Druckermerken
'Drucker für Ausgabe setzen, falls nicht der Aktive Drucker genommen werden soll
Application.ActivePrinter = "Samsung CLP-300 Series auf Ne00:"
If objWks.Shapes("Kontrollkästchen 5").ControlFormat.Value = 1 Then
'Kunden-Exemplar
'   objWks.PrintPreview
objWks.PrintOut
End If
'FarbeZelle zurücksetzen
If Not objZelleKopie Is Nothing Then
objZelleKopie.Interior.ColorIndex = lngFarbeKopie
objZelleKopie.MergeArea.ClearContents
End If
'Drucker zurücksetzen
If strAktiverDrucker  "" Then Application.ActivePrinter = strAktiverDrucker
End Sub


PS 2: Und hier das gesamte Modul "DRUCKEN", welches per Button gestartet wird:
Option Explicit


Sub Drucken()
Dim objWks As Worksheet, strAktiverDrucker As String, objZelleKopie As Range
Dim lngFarbeKopie As Long
On Error GoTo Fehler
Set objWks = Worksheets("Angebot")
Set objZelleKopie = objWks.Range("F26") 'Zelle zur Kennzeichnung der Kopie
lngFarbeKopie = objZelleKopie.Interior.ColorIndex 'Originalfarbe merken
'Drucken
strAktiverDrucker = Application.ActivePrinter 'aktiven Druckermerken
'Drucker für Ausgabe setzen, falls nicht der Aktive Drucker genommen werden soll
Application.ActivePrinter = "Samsung CLP-300 Series auf Ne00:"
If objWks.Shapes("Kontrollkästchen 5").ControlFormat.Value = 1 Then
'Kunden-Exemplar
'   objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 25").ControlFormat.Value = 1 Then
'Kopie - Kunde
objZelleKopie = "K O P I E"
'   objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 8").ControlFormat.Value = 1 Then
'Kopie - Produktion
objZelleKopie.Interior.ColorIndex = 6 'gelb
objZelleKopie = "KOPIE - Produktion"
'   objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 29").ControlFormat.Value = 1 Then
'Kopie - Produktion
objZelleKopie.Interior.ColorIndex = 3 'rot
objZelleKopie = "KOPIE - Tourenplanung"
'   objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 28").ControlFormat.Value = 1 Then
'Kopie - Produktion
objZelleKopie.Interior.ColorIndex = 40 'hellgrau
objZelleKopie = "KOPIE - Ablage/Koffer"
'   objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 31").ControlFormat.Value = 1 Then
'Kopie - Produktion
objZelleKopie.Interior.ColorIndex = 4 'grün
objZelleKopie = "KOPIE - Provisionsabrechn."
'   objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 32").ControlFormat.Value = 1 Then
'Kopie - Produktion
objZelleKopie.Interior.ColorIndex = 4 'grün
objZelleKopie = "KOPIE - Steuerberater"
'   objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 34").ControlFormat.Value = 1 Then
'Kopie - Produktion
objZelleKopie.Interior.ColorIndex = 4 'grün
objZelleKopie = "KOPIE - Zahlungsverkehr"
'   objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 6").ControlFormat.Value = 1 Then
'Kopie - Vertrieb
objZelleKopie.Interior.ColorIndex = 37 'hellblau
objZelleKopie = "KOPIE - Vertrieb"
'   objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 36").ControlFormat.Value = 1 Then
'Kopie - Vertrieb
objZelleKopie.Interior.ColorIndex = 33 'blau
objZelleKopie = "KOPIE - Lieferschein etc."
'   objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 7").ControlFormat.Value = 1 Then
'Exemplar - Allgemeine Ablage
objZelleKopie.Interior.ColorIndex = 33 'blau
objZelleKopie = "KOPIE - Gesamt-Ordner"
'   objWks.PrintPreview
objWks.PrintOut
End If
'  If objWks.Shapes("Kontrollkästchen 75").ControlFormat.Value = 1 Then
'    'PDF-Datei erstellen
'    'FarbeZelle zurücksetzen
'    objZelleKopie.Interior.ColorIndex = lngFarbeKopie
'    objZelleKopie.MergeArea.ClearContents
'    'PDF-Drucker auswählen
'    Application.ActivePrinter = "Acrobat PDFWriter auf LPT1:"
'    objWks.PrintOut
'  End If
Fehler:
If Err.Number  0 Then
If Err.Number = 1004 Then
'do nothing
Else
MsgBox "Fehler Nr. " & Err.Number & " ist aufgetreten!" & vbLf & Err.Description
End If
End If
'FarbeZelle zurücksetzen
If Not objZelleKopie Is Nothing Then
objZelleKopie.Interior.ColorIndex = lngFarbeKopie
objZelleKopie.MergeArea.ClearContents
End If
'Drucker zurücksetzen
If strAktiverDrucker  "" Then Application.ActivePrinter = strAktiverDrucker
End Sub


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Application.ActivePrinter"-Problem
31.07.2008 17:56:00
Bernd
Danke für die fixe Antwort.
Allerdings sehe ich vor lauter Bäume keinen Wald, da ich mit "Level: Excel gut - VBA bescheiden" wirklich meinte, daß VBA bei mir bescheiden ist. "Bescheiden" heißt bei mir "nahe Null". ;-)
Kannst Du mir vielleicht extwas detailliertere erklären, WAS ich WO ändern muß?
DANKE ... und schöne Grüße
Junker

AW: "Application.ActivePrinter"-Problem
31.07.2008 18:13:46
ChrisL
Hallo Bernd
Mal was anderes, du schreibst...
Was gibt es da für Möglichkeiten, so daß meine Eingabemaske.xls IMMER auf den direkt angeschlossenen Standard-Drucker eines jeden PCs druckt?
Wenn man auf die Printer Definition ganz verzichtet, dann geht der Druck automatisch immer auf den "Standard" Drucker. Vielleicht verstehst du unter "Standard" etwas anderes ;)
Und sonst, falls die Lösung nicht super flexibel sein muss, dann könntest du für die beiden User eine Ausnahmeregel definieren z.B. Windows Benutername abfragen...
If Environ("Username") = "Spezialuser1" Or Environ("Username") = "Spezialuser2" Then
Application.ActivePrinter = "Samsung CLP-300 Series auf Ne04:"
Else
Application.ActivePrinter = "Samsung CLP-300 Series auf Ne00:"
End If
Gruss
Chris

Anzeige
AW: "Application.ActivePrinter"-Problem
31.07.2008 23:50:00
Uduuh
Hallo,

Wenn man auf die Printer Definition ganz verzichtet, dann geht der Druck automatisch immer auf den "Standard" Drucker. 


Aber nicht, wenn der User vorher mal auf einen anderen Drucker gedruckt hat. Dann ist dieser der ActivePrinter und dort gehen die Drucke hin.
Gruß aus’m Pott
Udo

AW: "Application.ActivePrinter"-Problem
01.08.2008 08:58:00
Bernd
Hallo Chris,
der Standard-Drucker ist für mich der Drucker, der in der Systemsteuerung unter "Drucker und Faxgeräte" als Standard definiert ist.
Mit User bzw. Windows-Benutzernamen hat das bei mir aber nichts zu tun, denn an jedem PC arbeitet hier auch nur eine Person. Es loggen sich folglich keine unterschiedlichen Personen mit unterschiedlichen Usernamen ein.
Interessant:
Gestern hieß der Standard-Drucker an meinem "Problem-PC" noch "Samsung CLP-300 Series auf Ne04:".
Seit heute morgen jedoch "... auf Ne00:".
So sollte es auch sein. In meiner EIGABEMASKE.xls steht "... Ne00:" und an jedem PC kann dann auch ordentlich gearbeitet werden, wenn der Drucker auch an jedem PC mit " ... Ne00:" angesprochen werden kann.

Anzeige
AW: "Application.ActivePrinter"-Problem
01.08.2008 11:35:58
ChrisL
Hallo Bernd und Jörg
Also wegen "Standard" muss ich zurück krebsen. Jörg hat natürlich recht, ganz sicher ist mein Vorschlag, auf die Printerdefinition ganz zu verzichten, nicht.
Dass die Drucker über Nacht eine Namensänderung erfahren, scheint ein Mysterium.
Jedenfalls stehen bis jetzt zwei Möglichkeiten zur Auswahl. Entweder liest du den Drucker aus System, ist sicher die beste Lösung, aber da muss man sich in den angegebenen Beitrag einlesen.
Die andere Lösung ist nicht ganz so gut, aber ginge halt m.E. sehr einfach. Windows-Benuter Name dient lediglich zur Erkennung der beiden Problem-PC's, wie du sagst sitzen die beiden User immer am gleichen PC. Setzt natürlich voraus, dass sich die Bezeichnungen nicht täglich ändern.
gruss
chris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige