Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Drucktitel auf der letzten Druckseite entfernen

Betrifft: Drucktitel auf der letzten Druckseite entfernen von: Excelperte
Geschrieben am: 21.08.2014 21:23:43

Hallo,

diesen Beitrag habe ich schon gelesen: https://www.herber.de/forum/archiv/1304to1308/1305908_2_Worksheets_unterschiedliche_Wiederholungszeilen.html#1306096

Ich benutze das folgende Makro:

Sub Wiederholungszeilen()

Dim a%, b%

Sheets(Array("Abrechnung")).Select

a = ExecuteExcel4Macro("GET.DOCUMENT(50)")
   
    b = a - 1
    ActiveSheet.PageSetup.Order = xlDownThenOver
    ActiveSheet.PageSetup.PrintTitleRows = "$7:$7"
    
For a = 1 To b + 1

    If a > b Then
       ActiveSheet.PageSetup.PrintTitleRows = ""
    End If
    ActiveWindow.SelectedSheets.PrintOut _
    From:=1, To:=a, Copies:=1, Collate:=True

Next

End Sub
Mein Tabellenblatt "Abrechnung" hat x Seiten. Am Ende des Tabellenblatts steht immer eine 17-zeilige Zusammenfassung. Beginnt die letzte Seite mit der Zusammenfassung, soll der Drucktitel dort nicht erscheinen soll.
Passt die Zusammenfassung ohne Seitenumbruch mit unter meine Tabelle auf der Vorseite, soll der Drucktitel jedoch auf der letzten Seite angezeigt werden.

Wenn ich das Makro ausführe, erhalte ich drei einzelne Druckbefehle und entsprechend auch drei pdf-Dateien. Was ist an dem Makro falsch?

Weiterhin würde ich gern wissen, wie ich meine 17-zeilige Zusammenfassung AUTOMATISCH vor einem Seitenumbruch bewahre.

Ihr konntet mir bisher immer helfen! Hoffentlich auch dieses mal ... ;-)

  

Betrifft: AW: Drucktitel auf der letzten Druckseite entfernen von: fcs
Geschrieben am: 22.08.2014 14:30:50

Hallo Excelperte,

für einige Befehle ist die Reihenfolge noch nicht korrekt.
Der Drucktitel muss gesetzt werden bevor die Seitenzahl ermittelt wird.

Bei mir unter Excel 2010 rechnete das Excel4-Makro die Seitenzahl nicht korrekt aus. Deshalb die Umschaltung zwischen den Ansichten.

Die Druckjobs darfst du nicht in einer For-Next-Schleife drucken, sondern
als ein Druck, wenn die komplette Zusammenfassung auf die letzte Seite mit Tabelle passt

oder um Seitenwechsel durch die Zusammenfassung zu vermeiden

nach Setzen eines Seitenwechsel vor die Zusammenfassung von der 1. bis vorletzten Seite und dann nach löschen des Drucktitels die letzte Seite.

Das Makro sieht dann wie folgt aus.

Die Ausgabe als PDF hängt dann von dem verwendeten PDF-Drucker ab. Excel erzeugt bei jedem Druckjob eine neue Ausgabedatei.
Bei FreePDF besteht z.B die Möglichkeit eine MultiDoc-Ausgabe zu starten, so dass mehrere Druckausgaben auf den PDF-Drucker in einer Datei zusammengefasst werden können.


Gruß
Franz

Sub Wiederholungszeilen()

  Dim a%, b%, wks As Worksheet, Zeile_L As Long, Zeile_Zus1 As Long

  Set wks = Sheets("Abrechnung")
  wks.Select

  With wks
    'Letzte Zeile mit Daten in Spalte A = letzte Zeile Zusammenfassung
    Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row 'ggf. Nummer der Spalte anpassen
    '1. Zeile der Zusammenfassung
    Zeile_Zus1 = Zeile_L - 16
    
    .PageSetup.Order = xlDownThenOver
    .PageSetup.PrintTitleRows = "$7:$7"
    Application.ActiveWindow.View = xlPageBreakPreview
    Application.ActiveWindow.View = xlNormalView
    a = ExecuteExcel4Macro("GET.DOCUMENT(50)")
    
    If Zeile_Zus1 <= .HPageBreaks(.HPageBreaks.Count).Location.Row Then
        .HPageBreaks.Add before:=.Cells(Zeile_Zus1, 1)
        b = a - 1
    Else
        b = a
    End If
    
    If a > b Then
      MsgBox "Ausdruck erfolgt in 2 Druck-Jobs. Bei FreePDF im Dialog bitte " _
          & "beim 1. Job ""MultiDoc"" wählen, beim 2. ""Ablegen/Auf den Desktop""", _
          vbOKOnly + vbInformation, "Drucken FreePDF"
          
      Sheets("Abrechnung").PrintOut From:=1, To:=b, Copies:=1, Collate:=True
      
      .PageSetup.PrintTitleRows = ""
      .PrintOut From:=a, To:=a, Copies:=1, Collate:=True
    
      .HPageBreaks(.HPageBreaks.Count).Delete
      .PageSetup.PrintTitleRows = "$7:$7"
    Else
      .PrintOut
    End If
  End With
End Sub



  

Betrifft: AW: Drucktitel auf der letzten Druckseite entfernen von: Excelperte
Geschrieben am: 22.08.2014 16:55:51

Hi Franz,

vielen Dank für Deine schnelle Antwort.

Das Ausblenden des Drucktitels auf der letzten Seite gelingt nun, wenn meine Zusammenfassung auf der vorletzten Seite in der Mitte umgebrochen wird. Das ist schon mal super!
Steht die Zusammenfassung zufällig alleine auf der letzten Seite, erscheint hier jedoch der Drucktitel. Und auch das automatische Umbrechen der letzten 17 Zeilen, für den Fall, dass nur noch 16 oder weniger Zeilen frei sind, gelingt noch nicht.


  

Betrifft: AW: Drucktitel auf der letzten Druckseite entfernen von: Excelperte
Geschrieben am: 22.08.2014 21:11:17

Kommando zurück!

Ich wollte gerade eine Beispieldatei hochladen, da stellte ich zu meiner Verwunderung fest, dass diese perfekt funktionierte. Ich verglich sie mit der Originaldatei und stellte fest, dass ich im Original unterhalb des festgelegten Druckbereichs die Spaltenbreiten notiert hatte.
Diese Zahlen waren genau 4 Zeilen tiefer als die letzte Zeile der Zusammenfassung: (Zeile_L). Und genau 4 Zeilen waren umzubrechen - so ein Zufall. Somit konnte ich optisch nicht sehen, das ein Seitenumbruch erfolgte.

1000 Dank Franz! Ich wusste, Du machst keine Fehler ...

:-))))


 

Beiträge aus den Excel-Beispielen zum Thema "Drucktitel auf der letzten Druckseite entfernen"