Herbers Excel-Forum - das Archiv

Druckereinstellungen über VBA

Bild

Betrifft: Druckereinstellungen über VBA
von: uwe

Geschrieben am: 29.12.2006 09:28:43
Hallo,
ich habe zwei Schaltflächen in ein Tool integriert. Die eine führt eine Druckfunktion aus, in der vorher das Seitenlayout angepasst wird, die andere erstellt eine PDF-Datei.
Zur Erstellung der PDF-Datei muss ich den PDF-Drucker auswählen. Dieser ist für jeden User der gleiche. Möchte ich jedoch das Tool in Excel ausdrucken, muss ich wieder den ursprünglichen Drucker (Standarddrucker) auswählen. Für meinen Fall habe ich den Drucker definiert. Sollte jedoch ein User einen anderen Drucker haben, würde er das Tool auf meinem Drucker ausdrucken.
Gibt es eine Möglichkeit, den Druckernamen nicht fest zu definieren, sondern lediglich anzugeben, dass der jeweilige Standarddrucker auszuwählen ist, den man in der Systemsteuerung/Druckerauswahl als Standard definiert hat?
Anbei das Makro für die PDF-Erstellung:
Sub PDF()
On Error GoTo Ende
Application.ActivePrinter = "eDocPrinter PDF Pro auf Ne02:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"eDocPrinter PDF Pro auf Ne02:", Collate:=True _
Application.ActivePrinter = _
"\\S.....\P...... 402.. 03.OG Raum 309 auf Ne05:" 'hier dürfte dann kein Druckername mehr stehen, sondern das Makro müsste den jeweiligen als Standard definierten Drucker einstellen.
Ende:
End Sub

Ich hoffe, Ihr könnt mir weiterhelfen.
Gruß
Uwe
Bild

Betrifft: AW: Druckereinstellungen über VBA
von: yps

Geschrieben am: 29.12.2006 09:35:01
hi,
stell dem User doch den vorher eingestellten Drucker wieder zur Verfügung
macht immer einen guten Eindruck die Einstellungen eben NICHT zu verstellen
Sub bla()
Dim Drucker As String
Drucker = Application.ActivePrinter
'dein code
Application.ActivePrinter = Drucker
End Sub

cu Micha
Bild

Betrifft: AW: Druckereinstellungen über VBA
von: Uwe

Geschrieben am: 29.12.2006 11:37:39
Hallo Micha,
vielen Dank für deine Hilfe, aber so richtig verstehe ich das Makro nicht.
Ich habe z.B. 20 verschiedene User, die jeweils für sich verschiedene Standarddrucker definiert haben. Alle User greifen aber nur auf das eine Tool zurück. D.h. es würde nicht ausreichen, wenn ich nach Erstellung der PDF-Datei den Ursprungsdrucker definiere.
Ich müsste also, anders als zu Beginn beschrieben, nicht den Standarddrucker in das Makro der PDF-Erstellung schreiben, sondern in den Druckbefehl, so dass jeder User mit Betätigung der Schaltfläche seinen individuellen Drucker einstellt.
Ich brauche also ein Makro, dass je nach User den Standarddrucker einstellt. Also
Sub drucken
'normaler Druckbefehl aus Excel
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
'stelle den in der Druckereinstellung als Standard definierten Drucker ein
Makro = ????????
End Sub

Entschuldige den kleinen Denkfehler, der mir unterlaufen ist. Ich hoffe, dass du mir trotzdem weiterhelfen kannst.
Gruß
Uwe
Bild

Betrifft: AW: Druckereinstellungen über VBA
von: yps

Geschrieben am: 29.12.2006 12:27:30
hi,
sorry, ich weiss auch nach dem 27.mal lesen nicht was du eigentlich machen willst
und was ist für dich ein Standarddrucker ? Wirklich der Standarddrucker aus dem Druckmenü oder der Drucker den der User eingestellt hat(te) ?
Beschreibe mal verbal dein Vorhaben
cu Micha
Bild

Betrifft: AW: Druckereinstellungen über VBA
von: Uwe

Geschrieben am: 29.12.2006 13:39:33
hi,
man kann ja mehrere Drucker eingerichtet haben, muss jedoch einen als Standarddrucker auswählen. Möchte man einen anderen Drucker als den Standarddrucker auswählen, dann muss dieser explizit eingestellt werden. Wird das Programm neu geöffnet stellt sich der Standarddrucker wieder von neuem ein. Die Einstellung des Standarddruckers erfolgt i.d.R. über die Systemsteuerung.
Jeder User, der an einem anderen PC sitzt, kann sich seinen eigenen Drucker (Standarddrucker) einstellen (je nachdem wo er sitzt).
Jeder Drucker hat also einen anderen Namen (z.B. Drucker in Raum 1, Drucker in Raum 2, etc.). Die User benutzen alle zusammen das Tool, welches auf einem zentralen Server bereitgestellt wird und von jedem zugegriffen werden kann. Daher brauche ich ein Makro für die Druckfunktion, das den jeweiligen vom User definierten Drucker einstellt, ohne dass ich einen festen Druckername angeben muss.
Ich hoffe, dass ich etwas verständlicher war.
Gruß
Uwe
Bild

Betrifft: AW: Druckereinstellungen über VBA
von: yps

Geschrieben am: 29.12.2006 14:07:34
hi,
so stellst du den Standarddrucker aus der Systemsteuerung ein:
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
Declare 
Function GetProfileSection Lib "kernel32" Alias "GetProfileSectionA" _
(ByVal lpAppName 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)
If DeviceNr > 0 Then
GetDefaultPrinter = Left(TempName, InStr(TempName, ",") - 1)
Else
End Function

End If
End Function

Sub PDF()
On Error GoTo Ende
Application.ActivePrinter = GetDefaultPrinter
Ende:
End Sub

"Declare Function" jeweils hintereinanderschreiben (ist ein Fehler in der Darstellungsweise des Forums
cu Micha
Bild

Betrifft: AW: Druckereinstellungen über VBA
von: Uwe

Geschrieben am: 29.12.2006 15:02:37
Hallo Micha,
ich muss zugeben, dein makro überfordert mich.
Ich habe dein Makro in mein Tool eingestellt und deine Anweisung mit "Declare Function" befolgt. Die Schaltfläche habe ich mit Sub PDF() verknüpft. Ich erhalte jedoch eine Fehlermeldung bzgl. des If-Blocks. Es wird noch ein End if benötigt. Ich konnte leider nicht den Fehler beheben. Ich habe das End if verschoben. Dadurch erhalte ich zwar keine Fehlermeldung mehr, der Standarddrucker wird jedoch auch nicht eingestellt.
Weisst du woran es liegen kann?
Gruß
Uwe
Bild

Betrifft: AW: Druckereinstellungen über VBA
von: yps
Geschrieben am: 29.12.2006 16:23:04
hi,
probier mal:
https://www.herber.de/bbs/user/39246.xls
cu Micha
Bild

Betrifft: AW: Druckereinstellungen über VBA
von: Uwe

Geschrieben am: 29.12.2006 18:00:47
Hallo Micha,
ich weiss zwar nicht, was du da gemacht hast, dass werde ich aber noch herausfinden.
Auf jeden Fall funktioniert es einwandfrei.
Vielen Dank für deine Hilfe.
In diesem Sinne wümsche ich dir einen guten Rutsch.
Gruß
Uwe
 Bild
Excel-Beispiele zum Thema "Druckereinstellungen über VBA"
Druckereinstellungen verändern