2016-10-13 4 views
0

Ich habe einige vba, die wie folgt aussieht:VBA - Drucken Sie mehrere benannte Bereiche von einem Blatt in bestimmten Reihenfolge

Sub Print_Info() 

Worksheets("Scorecard (Monthly)").Activate 
ActiveSheet.PageSetup.PrintArea = "P1,P2,P3,P4,P5" 
ActiveWindow.SelectedSheets.PrintOut Preview:=Preview 

End Sub 

P1, P2 usw. sind alle genannten Bereiche, die auf dem gleichen Arbeitsblatt (Scorecard Monthly). Beim Ausführen der VBA wird der resultierende Ausdruck nicht in der richtigen Reihenfolge ausgegeben (wie in der VBA angegeben) - ich denke, das liegt daran, dass P1 & P2 unter P3, P4 und P5 auf dem Arbeitsblatt liegt. Die Reihenfolge der Seiten, die bei Verwendung von vba gedruckt werden, ist: P4, P1, P2, P5, P3. Die Reihenfolge der Seiten im Blatt ist P3, P4, P5, P1, P2 - also macht mir die Druckreihenfolge bei der Verwendung des VBA überhaupt keinen Sinn. Der Grund dafür ist, dass es sich um einen monatlichen Bericht handelt, aber ich wurde gebeten, regelmäßig eine Teilmenge der Informationen in einer etwas anderen Reihenfolge für eine andere Zielgruppe bereitzustellen - also wäre es praktisch, einfach einige VBA zu verwenden Ordne den Ausdruck neu an, ohne das eigentliche Arbeitsblatt zu berühren, da es für den normalen Zweck in Ordnung ist.

Gibt es eine Möglichkeit, Excel zu zwingen, den Bereich in einer Datei in der richtigen Reihenfolge von einem Blatt auszudrucken? Ich weiß, dass ich etwas tun könnte:

Sub Print_GSCB_Info() 

Worksheets("Scorecard (Monthly)").Activate 
ActiveSheet.PageSetup.PrintArea = "GSCB_P1" 
ActiveWindow.SelectedSheets.PrintOut Preview:=Preview 
ActiveSheet.PageSetup.PrintArea = "GSCB_P2" 
ActiveWindow.SelectedSheets.PrintOut Preview:=Preview 
ActiveSheet.PageSetup.PrintArea = "GSCB_P3" 
ActiveWindow.SelectedSheets.PrintOut Preview:=Preview 

End Sub 

jedoch, dass würde in separaten ‚Dateien‘ an den Drucker gesendet werden (was nicht ideal als Seitenzahlen ist nicht folgen usw.).

Antwort

0

Okay, nach ein wenig mehr Suche auf Google fand ich diese post, die eine etwas andere Methode zeigte. Die Verwendung der folgenden VBA funktioniert perfekt, obwohl immer noch nicht sicher, warum mein früherer Versuch nicht funktionierte!

Sub Print_Info_v1() 

Worksheets("Scorecard (Monthly)").Activate 

ActiveSheet.Range("P1,P2,P3,P4,P5").PrintOut 

End Sub 
0

Ich kann Ihnen nicht sagen, ob es eine Möglichkeit gibt, den Druckauftrag direkt zu ändern. Aber Sie könnten verwenden VBA diese Abhilfe zu tun, wenn Sie den monatlichen Bericht drucken möchten:

  1. Erstellen Sie ein neues Blatt
  2. Platz die Bereiche (P1-P5) in der richtigen Reihenfolge in diesem Blatt
  3. Drucken Sie die Blatt
  4. löschen das Blatt

Vorteil dieser Lösung: Sie können zwei verschiedene Layouts für die Originalvorlage und das gedruckte Dokument

+0

Vielen Dank, dass Sie sich die Zeit nehmen zu antworten. Wir werden uns darum kümmern, wie du sagst, es ist wahrscheinlich ein garantierter Weg, um es zum Laufen zu bringen. – bawpie

Verwandte Themen