AW: Diagramme sammeln und drucken
Alex
Hi, Daniel,
danke für deine Antwort!
Ich habe es versucht dementsprechend abzuändern. Das funktioniert prinzipiell auch ganz okay, aber Excel setzt immer selbst wieder unnötige Umbrüche, sodass meine Diagramme zerschnitten werden.
Sub Diagramme_Positionieren()
Dim ws As Worksheet
Dim diagramm As ChartObject
Dim startX, startY, abstand, maxBreite As Single
Dim i, j As Integer
Dim maxReihe, maxDiagrammeProSeite, zeilenProDiagramm As Integer
Dim form As Shape
Dim AnzahlDiagramme As Integer
Dim VielfachesVon6 As Integer
Dim UmbruchZeile As Integer
Set ws = ActiveSheet
ws.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Columns.Hidden = False
ActiveSheet.Cells.ClearContents
On Error Resume Next
ActiveSheet.PageSetup.PrintArea = ""
ActiveSheet.HPageBreaks.Delete
ActiveSheet.VPageBreaks.Delete
For Each form In ActiveSheet.Shapes
If Not form.Type = msoChart Then
form.Delete
End If
Next form
startX = 0
startY = 0
abstand = 0
maxBreite = 300
maxReihe = 2
maxDiagrammeProSeite = 6
zeilenProDiagramm = 15
AnzahlDiagramme = ActiveSheet.ChartObjects.Count
Debug.Print AnzahlDiagramme
VielfachesVon6 = AnzahlDiagramme / 6
i = 0
For j = 1 To VielfachesVon6
UmbruchZeile = zeilenProDiagramm * 3 * j
Debug.Print "Umbruch: " & UmbruchZeile
ActiveSheet.HPageBreaks.Add Before:=ActiveSheet.Rows(UmbruchZeile + 1)
Next j
ActiveSheet.VPageBreaks.Add Before:=ActiveSheet.Range("K1")
For Each diagramm In ActiveSheet.ChartObjects
diagramm.Height = ActiveSheet.Rows(1).RowHeight * zeilenProDiagramm
If i Mod 2 = 0 Then
diagramm.Left = startX
diagramm.Top = startY + (i / 2) * (diagramm.Height + abstand)
Else
diagramm.Left = startX + maxBreite + abstand
diagramm.Top = startY + ((i - 1) / 2) * (diagramm.Height + abstand)
End If
i = i + 1
Next diagramm
With ActiveSheet.PageSetup
.Zoom = False
.FitToPagesTall = False
.FitToPagesWide = True
.Orientation = xlPortrait
End With
Application.Dialogs(xlDialogPrint).Show
End Sub
Es werden fehlerhafte Umbrüche vor den Zeilen 18, 50, 76 und 83 gesetzt. Es liegt an .FitToPagesTall=False. Allerdings bekomme ich es auch nicht ohne das zum Laufen, da er dann plötzlich gar keine Umbrüche mehr setzt, auch nicht meine.
Das Bereitstellen einer Bsp.tabelle ist etwas schwierig in diesem Fall. Vielleicht fällt es auch doch noch so auf, wo mein Fehler liegt.
Jedenfalls danke für die Zeit!
VG Alex