jochem
Goto Top

Drucken aller Blätter in einer Excel-Mappe

Office Prof 2007

Moin zusammen,

ich habe da ein Problem mit Excel, wenn ich alle Blätter in einer Excel-Tabelle drucken will. Doch kurz zum Umfeld und dem Grund dieser Frage.

Aus einem Ratsinformationssystem werden sog. Druckmappen erzeugt, welche in gepackter Form alle TOPs enthalten. Diese zip-Datei wird nun in ein Verzeichnis entpackt. Mit "Datei - alles auswählen" werden alle Dateien (Word-, Excel-, PDF- und JPG-Format) markiert. Über die Auswahl "Drucken" sollen nun alle Dateien gedruckt werden. Das klappt für alle Formate bis auf die Excel-Datei. Aus der Excel-Datei wird nur das erste Blatt gedruckt.

Wie kann ich Excel dazu bewegen, aufgrund des oben beschriebenen Vorgehens ("Alles auswählen" und "Drucken") alle Blätter aus der Datei zu drucken?

Nachtrag: Die Tabellenblätter einzeln zu drucken ist keine Option, da die Ausdrucke in der Reihenfolge erscheinen müssen, wie sie als TOP eingegliedert sind. Die so erstellte Druckausgabe ist dann Vorlage für ein Kopiersystem, in welchem n Kopien dieser Druckausgabe erstellt werden.

Hat jemand eine Idee, wie dies mit Bordmitteln zu lösen ist?

Gruß J face-smile chem

Content-ID: 193233

Url: https://administrator.de/contentid/193233

Ausgedruckt am: 21.11.2024 um 21:11 Uhr

MrNetman
MrNetman 24.10.2012 aktualisiert um 14:48:31 Uhr
Goto Top
Hi Jochem,

im Druckdialog gibt es die Möglichkiet die gesamte Arbeitsmappe statt des aktuellen Arbeitsblattes zu drucken. Das sollte doch auch scriptgesteuert machbar sein.
So wie ich es hier gefunden habe: http://www.computerwissen.de/office/excel/artikel/alle-excel-tabellenbl ...
"Das folgende Makro können Sie einsetzen, um alle Tabellenblätter in der aktiven Arbeitsmappe auszudrucken. Es werden nur die sichtbaren Tabellen gedruckt:

Sub SichtbareTabellenDrucken()
Dim Arbeitsmappe As Worksheet
For Each Arbeitsmappe In Worksheets
If Arbeitsmappe.Visible = True Then
Arbeitsmappe.PrintOut
End If
Next Arbeitsmappe
End Sub

Die Tabellen gibt das Makro auf Ihrem Standarddrucker aus. Zum Testen können Sie das Kommando PrintOut durch den Befehl PrintPreview ersetzen. Dann wird nur die Seitenansicht angezeigt, ohne dass die Tabellen gedruckt werden. "



Gruß
Netman
d4shoerncheN
d4shoerncheN 24.10.2012 um 14:55:44 Uhr
Goto Top
Hallo, Netman.

Daran hatte ich auch schon gedacht, hab es aber noch nicht gepostet.

Grund: Er erstellt ja durch das Programm immer wieder ein neues Excel-File, in welchem der VBA-Code nicht enthalten ist.

Man müsste also die Standard-Druckoptionen im Excel komplett umbiegen, dass er grundsätzlich alle Blätter druckt. Das bedeutet dann bei einer Datei mit nur einem Tabellenblatt aber auch, dass er die Standard-Tabellenblätter (3) mit druckt.

Gruß
Jochem
Jochem 24.10.2012 um 15:07:46 Uhr
Goto Top
@MrNetman,
@d4shoerncheN

wie ich schon schrieb: "mit Bordmitteln", also ohne Macros, Scripte, etc. Die Vorlagen (TOPs) kommen von verschiedenen Personen und da ist der kleinste gemeinsame Nenner "Der PC ist eine schwarze Kiste und ich darf nicht reinbeissen!" Sorry, aber dem ist so.
Wenn so etwas laufen soll, dann muß JEDER das in seine Excel-Tabelle integrieren und da sehe ich Probleme. Wenn einer es macht und der nächste nicht, dann kann ich fast den kompletten Druckoutput in die Tonne treten bzw. manuell nacharbeiten, je nachdem, als welcher TOP die Excel-Tabelle auftaucht. Damit ist weder mir noch den Kollegen in der Hausdruckerei geholfen.
Es wäre also schon gut, wenn der generelle Druck-Dialog so umgebogen werden könnte, daß alle Tabellenblätter gedruckt werden.
Ich warte dann mal auf weitere Vorschläge. Danke bis hierher.

Gruß J face-smile chem
andimue
andimue 24.10.2012 aktualisiert um 15:16:54 Uhr
Goto Top
Wenn's auch ein bisschen VBS sein darf ?

Bitteschön:

xls_alle_blaetter_drucken.vbs

Const xlDoNotSaveChanges = 2

Dim fso, oXL, oWkbk

Set fso = CreateObject("Scripting.FileSystemObject")  
Set oXL = CreateObject("Excel.Application")  

oXL.Visible = False

If WScript.Arguments.Count = 0 Then
WScript.Quit
Else
For A = 0 To (WScript.Arguments.Count - 1)
If (Right(WScript.Arguments.Item(A), 3) = "xls") _  
AND fso.FileExists(WScript.Arguments.Item(A)) Then
Set oWkbk = oXL.Workbooks.Open(WScript.Arguments.Item(A))
oWkbk.PrintOut
oWkbk.Close xlDoNotSaveChanges
End If
Next
End If

oXL.Quit
Set fso = Nothing
Set oXL = Nothing

Aufrufen mit

cscript xls_alle_blaetter_drucken.vbs  zu-drucken-datei.xls

Übrigens, dein Kommentar "Ich warte dann mal auf weitere Vorschläge" kommt ein bisschen arrogant rüber, meinste nicht ?
Jochem
Jochem 24.10.2012 um 15:31:34 Uhr
Goto Top
Moin,

@andimue,
ok, klingt vielleicht arrogant, soll aber nichts anderes bedeuten, als daß ich auf Vorschläge von anderen Teilnehmern gespannt bin und deren Anregungen gerne auch noch aufnehme. Klingt das für Dich besser?

BTW: Ich hatte geschrieben "mit Bordmitteln" und nochmal explizit "also ohne Macros, Scripte etc.". Es darf also nicht "ein bisschen VBS" sein.

Gruß J face-smile chem
andimue
andimue 24.10.2012 um 15:33:56 Uhr
Goto Top
cscript ist (für mich) ein Bordmittel, aber wenn's nicht geht dann nicht.
Jochem
Jochem 24.10.2012 um 17:07:54 Uhr
Goto Top
Moin,

nur mal so zum Nachdenken meinerseits: Habe ich ne Chance, dieses Macro irgendwie in die Dokumentenvorlage für Excel zu integrieren, so daß das Macro grundsätzlich beim Erstellen einer neuen Excel-Datei aktiviert wird?

Gruß J face-smile chem
76109
76109 26.10.2012, aktualisiert am 28.10.2012 um 11:03:35 Uhr
Goto Top
Hallo Jochen!

Wäre die Frage zu klären, ob diese Funktion generell für alle Excel-Dateien aktiv sein soll. D.h. der Anwender bearbeitet andere Dateien und will vielleicht nur eine Seite ausdrucken etc...

Daher mein Vorschlag, wie es zumindest in meiner etwas älteren Excel-Version funktioniert, wäre eine AddIn-Datei (*.xla) in das Verzeichnis
'..\\Users\Administrator\Anwendungsdaten\Microsoft\Excel\XLStart' zu legen, das automatisch beim Excel-Start gestartet wird und alle Druckbefehle abfängt. Hierbei besteht insbesondere auch die Möglichkeit, diese Funktion nur für bestimmte Excel-Mappen zu aktivieren. D.h. z.B. nur Excel-Dateien, die ein bestimmtes Namensmuster oder sonstige Eigenschaften aufweisen.

Gruß Dieter