Gedankenspielereien
19.08.2015 16:59:13
Michael
Hi Benny,
die "Detailblätter" sind Excel-Datein bzw. - Blätter?!
Ich nehme an, daß Du keine Bilder auf x Ausdrucke zerstückeln möchtest, so daß Du sicher printToFit auf 1 Seite eingestellt hast.
Das führt bei sehr großen Grafiken aber dazu, daß evlt. auch vorhandener Text auf unlesbar kleine Größe eingedampft wird.
Was hältst Du von dem Ansatz, die Grafiken auf eine passende Größe zu skalieren? Dann kannst Du nämlich mit konstantem Druckbereich arbeiten.
Setz das Makro mal in ein Tabellenblatt, in dem eine Grafik vorhanden ist und ändere den Namen der Grafik (in der Variablen grafik) entsprechend ab. Die Ausgabe erfolgt im Direktfenster (VB-Editor: Strg+g oder unter Ansicht/...).
Der Code:
Option Explicit
Sub GrafikResize()
Dim grafik As String
Dim ist_x As Double, faktor As Double
Const max_x As Double = 600
grafik = "Bild 2"
' Originalgröße der Grafik einstellen:
Shapes(grafik).ScaleHeight 1, msoTrue
Shapes(grafik).ScaleWidth 1, msoTrue
' und ausgeben:
Debug.Print "Originalgröße:"
Debug.Print Shapes(grafik).Height
ist_x = Shapes(grafik).Width
Debug.Print ist_x
' Größe ändern
faktor = max_x / ist_x
Debug.Print "Und nach Änderung:"
Shapes(grafik).ScaleHeight faktor, msoTrue
Shapes(grafik).ScaleWidth faktor, msoTrue
Debug.Print Shapes(grafik).Height
Debug.Print Shapes(grafik).Width
End Sub
Die Ausgabe bei meiner nächstbesten Beispielgrafik sieht so aus:
Originalgröße:
576
768
Und nach Änderung:
449,25
599,25
Eine ggf. sinnvolle Abfrage in y-Richtung überlasse ich Dir.
Schöne Grüße,
Michael