Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
912to916
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
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Standard-Drucker als Auswahl im Drucken...-Menu

Standard-Drucker als Auswahl im Drucken...-Menu
03.10.2007 14:01:00
Rolf
Hallo Leute,
Mal was ganz einfaches (Im krassen Gegensatz zu meine anderen Problemen.)
Uswahl beim Drucen soll der Standard-Drucker sein. Wie stelle ich das ein (Weil der Standard-Drucker ist ja bei jedem Mitarbeiter, der das benutzt, ein anderer)?
Bisher:
Application.ActivePrinter = "CutePDFWriter auf CPW2:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Danke für eure immer Hilfreichen Antworten!
Gruss
Rolf

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

Betreff
Datum
Anwender
Anzeige
AW: Standard-Drucker als Auswahl im Drucken...-Menu
03.10.2007 14:15:24
Hajo_Zi
Hallo Rolf,
warum mußt Du den Drucker einstellen, wenn es der Standarddrucker ist?

AW: Standard-Drucker als Auswahl im Drucken...-Menu
04.10.2007 10:34:00
Rolf
Da wir verschiedene Drucker verwenden (zb einen PDF writer) der als drucker durchaus ausgewählt werden kann und dann aktiv ist umd bleibt. will ich dann drucken, dann wird ein pdf gemacht, anstelle ein ausdruck am lokalen drucker. Also muss ich dem programm zuerst sagen, er soll den lokalen Drucker auswählern, oder eben jhalt den "stabdardrucker" der eingestellt ist.
Gruss
Rolf

AW: Standard-Drucker als Auswahl im Drucken...-Menu
04.10.2007 10:47:00
Hajo_Zi
Hallo Rolf,
Standard-Drucker auslesen
versuch’s mal damit:

Sub Standarddrucker()
Open "c:\windows\win.ini" For Input As #1
Do While Not EOF(1)
Line Input #1, txt
If txt Like "device*" Then Drucker = txt: Exit Do
Loop
CloseDrucker = Right(Drucker, Len(Drucker) - InStr(1, Drucker, "="))
MsgBox Drucker
Close #1
End Sub


‚ von Jörg Lorenz
Gruß Hajo

Anzeige
AW: Standard-Drucker als Auswahl im Drucken...-Menu
04.10.2007 11:14:28
Rolf
Nein, funzt nicht.
Stelle ich unter Drucker... den AdobePDF drucker ein, und lasse das Makro laufen, ändert der Drucker nicht auf meinen Standard-Drucker...
Gruss
Rolf
Ich wollte es mal mit dem versuchen:
Option Explicit
Declare

Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" _
(ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long) As Long


Function GetDefaultPrinter() As String
Dim TempName As String
Dim DeviceNr As Long
TempName = String(1024, 0)
DeviceNr = GetProfileString("windows", "device", 0&, TempName, 1024)
GetDefaultPrinter = Left(TempName, InStr(TempName, ",") - 1)
End Function


Sub Drucken_mit_Standarddrucker()
ActiveWindow.SelectedSheets.PrintOut , ActivePrinter:=GetDefaultPrinter
End Sub


aber weiss nicht genau, wo das hinkommen muss (In Formulare oder das Arbeitsblatt, die Tabelle?)
Ausserdem wird beim reinkopieren der ganze erste Teil rot dargestellt, also fehlerhaft...
Da ich weder mit Declare noch jemals mit


Function gearbeitet habe, kannst du mir da in dieser Beziehung weiter helfen?
Gruss
Rolf

Anzeige
AW: Standard-Drucker als Auswahl im Drucken...-Menu
04.10.2007 11:15:00
Rolf
Nein, funzt nicht.
Stelle ich unter Drucker... den AdobePDF drucker ein, und lasse das Makro laufen, ändert der Drucker nicht auf meinen Standard-Drucker...
Gruss
Rolf
Ich wollte es mal mit dem versuchen:
Option Explicit
Declare

Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" _
(ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long) As Long


Function GetDefaultPrinter() As String
Dim TempName As String
Dim DeviceNr As Long
TempName = String(1024, 0)
DeviceNr = GetProfileString("windows", "device", 0&, TempName, 1024)
GetDefaultPrinter = Left(TempName, InStr(TempName, ",") - 1)
End Function


Sub Drucken_mit_Standarddrucker()
ActiveWindow.SelectedSheets.PrintOut , ActivePrinter:=GetDefaultPrinter
End Sub


aber weiss nicht genau, wo das hinkommen muss (In Formulare oder das Arbeitsblatt, die Tabelle?)
Ausserdem wird beim reinkopieren der ganze erste Teil rot dargestellt, also fehlerhaft...
Da ich weder mit Declare noch jemals mit


Function gearbeitet habe, kannst du mir da in dieser Beziehung weiter helfen?
Gruss
Rolf

Anzeige
AW: Standard-Drucker als Auswahl im Drucken...-Men
04.10.2007 12:23:59
Harry
Hallo Rolf,
probier mal

Sub test()
Dim appWD As Excel.Application
Set appWD = CreateObject("Excel.Application")
appWD.Workbooks.Add
MsgBox appWD.Application.ActivePrinter
appWD.Workbooks.Close
End Sub


Gruß
Harry

AW: Oh happy Days... fast!
04.10.2007 13:55:07
Rolf
Hallo Harry
*Freu*
Dat Makro geht. Er sagt mir nun in der MsgBox den Standarddrucker!
Nun noch eine Kleinigkeit, die ich als Minderbemitelter VBA User nicht hinkriege. Anstelle der MsgBox soll er das, was die anzeigt, als Druckername in folgende Druckabfrage Schreiben...:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"[Hier der Text aus der MsgBox]", Collate:=True
Wenn das doch noch klappen würde, hätten wir im ganzen Forum den ersten Thread, der das Problem wirklich lösen würde, auf ganz einfache Art...
Gruss
Rolf

Anzeige
AW: Oh happy Days... fast!
04.10.2007 15:39:56
Harry
Hallo Rolf,
ich bezweifle zwar stark, dass das die erste vollständig beantworte Anfrage hier im Forum ist, aber sei's drum.
Da du die Auswahl des Standarddruckers evtl. öfter an verschiedenen Stellen brauchen kannst, empfiehlt es sich, die Ermittlung in eine separate Funktion zu packen und dann immer auf diese Funktion zuzugreifen. Den Befehl mit der Messagebox kannst du später löschen, wenn alles definitv funktioniert (ist nur zur Kontrolle)

Function Standarddruckerwahl() As String
Dim appWD As Excel.Application
Set appWD = CreateObject("Excel.Application")
appWD.Workbooks.Add
MsgBox appWD.Application.ActivePrinter 'kannst du später
'auskommentieren(löschen),
'wenn es sicher funktioniert
Standarddruckerwahl = appWD.Application.ActivePrinter
appWD.Workbooks.Close
End Function
Sub DeinVorhandenesMakro()
'hier kommen deine Befehle
'blablabla
'und jetzt kommt dein Druckbefehl, welcher die Function benutzt
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
Standarddruckerwahl, Collate:=True
'hier kommen deine weiteren Befehle
'blablabla
End Sub


Habe es aber hier nur mit einem lokalen Standarddrucker getestet.
Gruß
Harry

Anzeige
Standarddrucker auswählen / einfügen / wählen
04.10.2007 16:42:19
Rolf
Hallo Harry
Glaub mir, ich war über 2 Stunden in dem Archiv und habe nirgends auch nur annähernd die Lösung dieses Problems gefunden... (Desswegen hab ich mich um einen Sinvollen Titel wirklich bemüht) und es lebt!
H U R R A ! !
Ich werde dich für das Bundestverdienstkreuz vorschlagen!
DANKE! MERCI! und so was von Grazie!
Rolf

AW: Standard-Drucker als Auswahl im Drucken...-Menu
Orakel
Hallo,
vielleicht hilft das weiter. Aus der Hilfe:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Abhängig vom Namen des aktiven Tabellenblatt wird der Drucker gewählt
Select Case ActiveSheet.Name
Case "Dein_Dateiname"
'Drucken auf Farbdrucker (Netzwerk)
Application.ActivePrinter = "Brother QL-550 auf Ne08:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=True, _
ActivePrinter:="Brother QL-550 auf Ne08:", Collate:=True
'         Case "Dein_Dateiname"
'         'Drucken auf Labeldrucker (Netzwerk)
'          Application.ActivePrinter = "\\s050a1025\P000A6084 auf Ne04:"
'         Case Else
'         'Drucken auf lokalem Drucker (Standarddrucker)
'          Application.ActivePrinter = "HP LaserJet 4 auf LPT1:"
End Select
End Sub


Grüße, Orakel

Anzeige
AW: Standard-Drucker als Auswahl im Drucken...-Menu
04.10.2007 10:39:00
Rolf
Hilft auc hnicht wirklich weiter, da wie gesagt mehrere Leute mit der Tabelel arbeiten und der eine mal einen Hp Lj 1100 und der andere mal einen HP LJ 1200 hat und der dritte druckt über einen Netzwerkdrucker, der neben ihm steht. Somit darf ich weder LPT1 noch einen expliziten Druckernamen verwenden, sondern eine Routine, die sich den aktuellen Drucker, der als Standartdrucker markiert ist, auswählt.
Das hier funzt also nicht:
' 'Drucken auf lokalem Drucker (Standarddrucker)
' Application.ActivePrinter = "HP LaserJet 4 auf LPT1:"
Also, wer hat noch eine Idee?
Gruss
Rolf
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige