Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Makro für 1. Standarddrucker, 2. Kopiedrucker

244 views
Skip to first unread message

Harri Märki

unread,
Jan 21, 2009, 5:59:02 AM1/21/09
to
Hallo zusammen

Ich habe ein Excelformular mit einem Makro versehen, das mir den Ausdruck
erstens auf meinen Standarddrucker macht und dann eine zweiten Ausdruck auf
einen anderen Drucker (Kopie). In meinem Falle handelt es sich um einen
"PDF-Drucker", sprich es wird ein PDF erstellt. Aktuell sieht mein Makro so
aus:

Sub Print2()

ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,""\\server-xy\pdf-w2k auf
Ne39:"",,TRUE,,FALSE)"

End Sub

Das läuft soweit wunderbar... solange ich den Standarddrucker auch gesetzt
habe. Wenn das Makro mal gelaufen ist, ist aber der PDF-Drucker der aktuelle
Drucker für dieses File. Ein erneutes ausführen würde dann beide Ausdrucke
auf den PDF-Drucker machen.

Kann ich das nicht so ähnlich machen?

Sub Print2()

ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,"Standarddrucker",,TRUE,,FALSE)"
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,""\\serverxy\pdf-w2k auf
Ne39:"",,TRUE,,FALSE)"

Wie kann ich sagen, dass explizit zuerst immer auf den gesetzten
Standarddrucker ausgedruckt werden soll? Wie müsste der Parameter
"Standarddrucker" in meinem Makro heissen?

Gruss Harri

Martin Worm

unread,
Jan 21, 2009, 7:16:02 AM1/21/09
to
Am Wed, 21 Jan 2009 02:59:02 -0800,schrieb Harri Märki:

hallo,

>Sub Print2()
>
> ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,"Standarddrucker",,TRUE,,FALSE)"
> ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,""\\serverxy\pdf-w2k auf
>Ne39:"",,TRUE,,FALSE)"
>
>Wie kann ich sagen, dass explizit zuerst immer auf den gesetzten
>Standarddrucker ausgedruckt werden soll? Wie müsste der Parameter
>"Standarddrucker" in meinem Makro heissen?
>

Wenn der Drucker dabei gewechselt wird,
wie wäre es mit tauschen der Reihenfolge?
Erst PDF dann auf Standard.

mfG
mit freundlichen Grüßen

Martin Worm
--
benutze XL 2000 und Win XP SpX

Harri Märki

unread,
Jan 21, 2009, 7:51:01 AM1/21/09
to
Hallo Martin

"Martin Worm" wrote:

> Am Wed, 21 Jan 2009 02:59:02 -0800,schrieb Harri Märki:

> Wenn der Drucker dabei gewechselt wird,
> wie wäre es mit tauschen der Reihenfolge?
> Erst PDF dann auf Standard.

Das wäre sicherlich eine Möglichkeit, nur haben wir hier verschiedene User
für dieses Formular, die dann auch jeweils einen anderen Standarddrucker
haben. Wenn ich nun das Makro aufzeichne, dann wird ja "nur" mein eigener
Standarddrucker gewählt.

Und nur die beiden Einträge jetzt austauschen geht auch nicht, weil dadurch
zuerst der PDF-Drucker gesetzt wird und dann auch der als "Kopiedrucker"
gewählt wird.

Da muss es noch eine andere Lösung geben (ev. etwas wie
"default.printoutque" oder sowas).

Gruss Harri

Bernhard Sander

unread,
Jan 21, 2009, 8:34:54 AM1/21/09
to
Hallo Harri,

mittels
Application.ActivePrinter
kannst Du (rechtzeitig) den aktuellen Drucker abfragen und später wieder einstellen.
Hth

Gruß
Bernhard Sander

Harri Märki

unread,
Jan 22, 2009, 3:24:01 AM1/22/09
to
Hallo Bernd

Danke schon mal für den Hinweis. Wie genau müsste dann mein Makro aussehen?

Sub Print2()
'
' Print2 Makro
'

'

ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"


ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,""\\serverxy\pdf-w2k auf
Ne39:"",,TRUE,,FALSE)"

End Sub

Wo oder wie genau muss ich in meinem Makro das "Application.ActivePrinter"
einsetzen? So:


Application.ActivePrinter=
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
ExecuteExcel4Macro "PRINT(1,,,1 .... etc.

klappt es nicht. Bin nicht gerade der absolute "Hirsch" in VBA.

Gruss Harri

Peter Lederer

unread,
Jan 22, 2009, 6:43:44 AM1/22/09
to
Am 22.01.2009 schrieb Harri Märki:

Sub Print2()
Standard_Drucker = Application.ActivePrinter 'Standarddrucker in Variablen
speichern...

> ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
> ExecuteExcel4Macro "PRINT(1,,,1 .... etc.

Application.ActivePrinter = Standard_Drucker ' und wieder zuweisen

End Sub

--
Grüße
Peter

Harri Märki

unread,
Jan 23, 2009, 10:40:08 AM1/23/09
to
Hallo Peter

Danke für Dein Feedback.

"Peter Lederer" wrote:


Wenn ich das also richtig interpretiere, dann muss ich den Standarddrucker
angeben. Also z.B. PRT01. Das wäre ja dann jeweils fix dem Dokument
hinterlegt. Nun haben wir aber z.B. den "Fritz Muster", der den Drucker PRT01
als Standarddrucker hat. Bei ihm also kein Problem. Dann wäre da noch der
"Manfred Test", der aber den Drucker PRT03 als Standardrucker hat. Und zu
guter letzt wäre da noch "Helga Immerfröhlich", die in einer anderen Filiale
arbeitet und dort den Drucker PRT28 als Standarddrucker hat.

Also entweder habe ich jetzt Deinen Tipp falsch interpretiert oder ich muss
das komplett anders machen. Gibt es denn irgendwo eine "Variable", die mir
nachschaut, welches der eingestellte Standarddrucker (default.Printer o.ä.)
in meinem System ist und diesen dann einfach auswählt?

Gruss Harri

Peter Lederer

unread,
Jan 23, 2009, 10:52:41 AM1/23/09
to
Am 23.01.2009 schrieb Harri Märki:

> Gibt es denn irgendwo eine "Variable", die mir
> nachschaut, welches der eingestellte Standarddrucker (default.Printer o.ä.)
> in meinem System ist und diesen dann einfach auswählt?

Ich bin davon ausgegangen, dass der Standarddrucker beim Start von Excel
auch der aktive Drucker ist. Mit

Standard_Drucker = Application.ActivePrinter

weise ich der Variablen 'Standard_Drucker' den Namen des aktiven Druckers
zu. Dann folgen deine Codezeilen, ganz am Schluß wird der in der Variablen
gespeicherte Drucker wieder zum aktiven Drucker gemacht. Damit hast Du nach
durchlauf des Makros wieder druckerseitig den Ausgangszustand.

Noch eleganter wäre es in der Tat, den Windows-Standarddrucker in der
Variablen zu speichern, dafür habe ich aber leider keine Lösung.

--
Grüße
Peter

Harri Märki

unread,
Feb 13, 2009, 10:16:07 AM2/13/09
to
Hallo Peter

Danke nochmals für Dein Feedback. War letzte Woche in den Ferien und habe es
heute nochmals versucht.

Das mit der Variablen für den Standarddrucker funktioniert jetzt.
Nach erneutem studieren dieses Threads und den Antworten aller Tippgeber
habe ich es nun hingekriegt. Mit dieser Lösung so kann ich arbeiten. Besten
Dank nochmals an alle!

Gruss
Harri

Peter Lederer

unread,
Feb 13, 2009, 10:28:23 AM2/13/09
to
Am 13.02.2009 schrieb Harri Märki:

> Mit dieser Lösung so kann ich arbeiten.

:)

> Besten Dank nochmals an alle!

Bitte, gern geschehen.

--
Grüße
Peter

Harri Märki

unread,
Feb 16, 2009, 4:09:01 AM2/16/09
to
Hier noch für die, die gerne wissen möchten, wie das Makro jetzt aussieht:

Sub Drucken()

'Standarddrucker in Variablen speichern...
Standard_Drucker = Application.ActivePrinter

'Druckjob starten
Sheets(Array("Tabelle1", "Tabelle2")).Select
Sheets("Tabelle1").Activate
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
Application.ActivePrinter = "\\uda04110\pdf-w2k auf Ne39:"
ExecuteExcel4Macro _
"PRINT(1,,,1,,,,,,,,2,""\\uda04110\pdf-w2k auf Ne39:"",,TRUE,,FALSE)"

'Standarddrucker wieder zuweisen
Application.ActivePrinter = Standard_Drucker

End Sub

Es gilt dabei zu erwähnen, dass zwei Registerblätter markiert und
ausgedruckt werden.

Gruss Harri

0 new messages