Mappe als pdf drucken, mit Rahmen um jedes Blatt

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

Betrifft: Mappe als pdf drucken, mit Rahmen um jedes Blatt
von: Felix
Geschrieben am: 13.10.2015 14:42:58

Hallo zusammen,
ich brauche wiedermal eure Hilfe!
Und zwar drucke ich per Makro eine gesamte Mappe als pdf . Das ganze funktioniert alles soweit.
Jetzt hätte ich gerne um jedes Blatt einen Rahmen, quasi dort wo die Seitenränder verlaufen. Ist das irgendwie möglich?
Vielen Dank schon mal,
Grüße Felix

Bild

Betrifft: evtl. eine Krücke
von: Michael
Geschrieben am: 13.10.2015 22:02:14
Hi Felix,
probier mal die Subs aus:

Option Explicit
Sub Rahmen_EinAus(ByRef Blatt As Worksheet, ByVal wert)
Dim hUm As Long, vUm As Long
Dim i&, j&
Dim pa As String
Dim pa_loX&, pa_loY&, pa_ruX&, pa_ruY&
pa = Blatt.PageSetup.PrintArea
If pa <> "" Then
  pa_loX = Range(pa)(1).Column
  pa_loY = Range(pa)(1).Row
  pa_ruX = Range(pa)(Range(pa).Count).Column
  pa_ruY = Range(pa)(Range(pa).Count).Row
  hUm = Blatt.HPageBreaks.Count
  vUm = Blatt.VPageBreaks.Count
  With Blatt.Range(pa)
    .Borders(xlEdgeLeft).LineStyle = wert
    .Borders(xlEdgeTop).LineStyle = wert
    .Borders(xlEdgeBottom).LineStyle = wert
    .Borders(xlEdgeRight).LineStyle = wert
  End With
  For i = 1 To vUm
    j = Blatt.VPageBreaks(i).Location.Column
    Range(Blatt.Cells(pa_loY, j - 1), _
      Blatt.Cells(pa_ruY, j)).Borders(xlInsideVertical).LineStyle = wert
  Next
  For i = 1 To hUm
    j = Blatt.HPageBreaks(i).Location.Row
    Range(Blatt.Cells(j - 1, pa_loX), _
      Blatt.Cells(j, pa_ruX)).Borders(xlInsideHorizontal).LineStyle = wert
  Next
End If
End Sub
Sub Einschalten()
Dim sh As Worksheet
Set sh = Sheets("Tabelle2")
Call Rahmen_EinAus(sh, xlContinuous)
End Sub
Sub Ausschalten()
Dim sh As Worksheet
Set sh = Sheets("Tabelle2")
Call Rahmen_EinAus(sh, xlNone)
End Sub

Die Sub Rahmen_EinAus, die die eigentliche Arbeit macht, erwartet als Parameter ein Tabellenblatt und entweder xlNone, das löscht die Rahmen, oder xlContinuous, das setzt sie - andere Parameter kannst Du ja bei Bedarf noch einfügen: eine Reihe davon zeigt Dir Excel an, wenn Du mit dem Makrorekorder aufzeichnest, wie Du irgendwo einen Rahmen malst.
Den Aufruf habe ich so gewählt, weil das flexibel ist und Du vermutlich die Datei sowieso in einer Schleife für den Druck aufbereitest á la
Sub alleBlätter()
Dim sh As Worksheet
For Each sh In Worksheets
  MsgBox sh.Name
Next
End Sub

In dieser Schleife kannst Du das Malen der Rahmen dann anstelle der MsgBox positionieren.
Schöne Grüße,
Michael

Bild

Betrifft: AW: Mappe als pdf drucken, mit Rahmen um jedes Blatt
von: Felix
Geschrieben am: 18.10.2015 19:18:14
Hey Michael,
vielen Dank für deine Antwort, ich bin leider noch nicht dazu gekommen den Code auszuprobieren. Werde ich aber die Tage angehen.
Gruß Felix

Bild

Betrifft: Danke für die Nachricht,
von: Michael
Geschrieben am: 19.10.2015 17:30:50
Felix,
aber paß auf: nach ein paar Tagen kann man nicht mehr antworten.
Der Rahmen ist ganz nett, benutzt aber den jeweiligen Druckbereich, d.h. wenn Du nur ne halbe Seite druckst (als Druckbereich definiert hast), wird nur die halbe Seite umrahmt. Das *könnte* man programmtechnisch ändern (Aufwand), aber es ist vielleicht einfacher, die Druckbereiche so einzurichten, daß ggf. entsprechende Leerzeilen und -spalten mitgedruckt werden, damit der Rahmen schön aussieht.
Happy Exceling,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Mappe als pdf drucken, mit Rahmen um jedes Blatt"