Druck Makro

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Druck Makro
von: Fiax
Geschrieben am: 30.07.2015 21:29:17

Hallo zusammen!
Ich verzweifele seit Tagen an einer automatischen Druckfunktion aus einer Arbeitsmappe aus Excel. Vielleicht kann mit ja hier jemand helfen?
Zum Problem:
Es gibt mehrere Computer mit unterschiedlichen Excel-Versionen, die an unterschiedliche Drucker angeschlossen sind.
Das Dokument besteht aus mehreren Arbeitsmappen. In einer Arbeitsmappe soll eine Schaltfläche angelegt werden, die nur die linke Hälfte des Inhaltes auf DinA4 im Hochformat druckt. Auf ein paar der Computern soll zusätzlich der komplette Inhalt auf DinA3 im Querformat gedruckt werden können. Bisher ist der Berich der Arbeitsmappe, der auf der DinA3 Seite gedruckt werden soll, als Druckbereich markiert und die Orientierung auf Querformat und das Papierformat auf DinA3 eingestellt. (Bisher wurde nur in DinA3 Querformat gedruckt, der Ausdruck in DinA4 ist nun neu.)
Mein Versuch sieht bisher so aus, dass ich über den Makrorekorder die Mausbewegungen aufgenommen habe und im ersten Versuch für den DinA4 Ausdruck den linken Bereic markiert habe, dann über das Druckmenü die Orientierung und das Papierformat ausgewählt habe und auf Drucken geklickt habe. Das hat während des Aufnehmens des Makros super geklappt. Nachdem ich der Schaltfläche das Makro zugewiesen hatte, erfolgte beim Anklicken der Schaltfläche zwar ein Ausdruck, aber nicht des kompletten markierten Bereiches, sondern nur der oberen Hälfte, die um 90 Grad gedreht war. So als hätte die Orientierung auf Hochformat nicht funktioniert.
Der zweite Versuch bestand darin, statt dem Druckmenü die Seitenansicht zu öffnen und hier über Layout die Orientierung und das Papierformat auszuwählen und in der Seitenansicht über Drucken das Dokument zu drucken. Das klappt schon etwas besser. Lediglich das Schließen der Seitenansicht klappt nicht, so dass man die Seitenansicht manuell schließen muss, woraufhin dann das Dokument gedruckt wird. Das klappt für DinA3 und DinA4, jeweils über separate Schaltflächen. Allerdings sollte es eigentlich nur eine Schaltfläche für den DinA4 Ausdruck geben. Nachdem diese Schaltfläche benutzt wurde, funktionierte allerdings die "normale" Druckfunktion über den Druckdialog mit dem markierten Bereich in DinA3 und Querfomat auf dem DinA3-Drucker nicht mehr, weil der immer DinA4 Papier haben wollte (welches er nicht hat). Deshalb habe ich auch für den DinA3-Ausdruck eine Schaltfläche gemacht. In diesem Makro habe ich auch den Drucker auf den DinA3-Drucker geändert. Das hat dazu geführt, dass an dem Computer, an dem DinA3 und DinA4 gedruckt werden soll, nun DinA4 nur zuerst gedruckt werden soll und nicht mehr, nachdem DinA3 auf dem DinA3-Drucker gedruckt wurde. Danach wird nur noch der DinA3-Drucker angewählt, der aber kein DinA4 Papier hat und auch nicht für DinA4 Ausdrucke genutzt werden soll/kann. Nun könnte ich dem Makro für DinA4-Drucke auch einen Drucker zuweisen, damit die DinA4 Ausdrucke nicht an den DinA3-Drucker gehen, dummerweise sind das bei verschiedenen Computern aber unterschiedliche Drucker (der DinA3 Drucker ist immer der selbe) und ich kann nicht für jeden Drucker eine eigene Schaltfläche erstellen.
Hat jemand eine Idee, wie ich eine einzige Schaltfläche für den DinA4 Ausdruck von verschiedenen Computern auf verschiedenen Druckern erstellen kann ohne die Standardeinstellung für den Ausruck über das Druckmenü (DinA3, Querfomat, 145%) zu ändern?
Alternativ auch eine Lösung, wie die Seitenansicht sich automatisch - als Teil des Makros - selber schließt. (Denn hier klicken Kollegen gerne auf "Drucken" statt auf "Schließen" und dann werden 3 statt 1 Seite gedruckt)
Außerdem flackert der Bildschirm bei der Makrovariante mit der Seitenansicht eine kurze Zeit, bevor die Seitenansicht geöffnet wird. Woran liegt das und geht das weg?
Ich hoffe, dass ich es verständlich genug geschrieben habe und hoffe, dass ihr mir helfen könnt.
Viele Grüße,
Fiax

Bild

Betrifft: AW: Druck Makro
von: Michael
Geschrieben am: 01.08.2015 18:34:11
Hallo Fiax,
vielleicht hilft ein workaround. Mittels Environment-Variablen kannst Du ja den Arbeitsplatz abfragen, auf dem die Tabelle jeweils läuft.
Weiterhin dürfte es keine große Geschichte sein, alle für A4 benötigten Daten in einem extra Blatt nur für den A4-Ausdruck zu stecken: entweder so, daß das Makro alle Daten vor dem Ausdruck da hinein kopiert oder mittels einfachen Verweisen auf das A3-Blatt.
Beim Öffnen der Datei könnte man dann automatisiert je nach Rechner das jeweils unpassende Blatt ausblenden, so daß die Druckfunktion nur das nicht ausgeblendete Blatt verwendet.
Wenn man das zuende denkt, könnte es darauf hinauslaufen, daß auf jedem Rechner eine "Druck-Layout"-Datei hinterlegt wird, die optimal an den Arbeitsplatz-Drucker angepaßt ist, und die vom Druckmakro aus mit entsprechenden Werten gefüllt und dann gedruckt wird.
Datei mit Prinzip-Funktion anbei. Das Makro

Private Sub Workbook_Open()
Dim name As String
name = Environ("username") ' oder sonstwas aus dem Env.
MsgBox name
If name = "Test" Then
  Sheets("Druck_A4").Visible = xlSheetVeryHidden
  Sheets("Druck_A3").Visible = xlSheetVisible
  Else
  Sheets("Druck_A4").Visible = xlSheetVisible
  Sheets("Druck_A3").Visible = xlSheetVeryHidden
End If
End Sub

steckt in "diese Arbeitsmappe", das andere in "Daten".
Datei: https://www.herber.de/bbs/user/99237.xls
Schöne Grüße,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "mehrere Werte in einer Zelle -> Maximum ermitteln"