Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1440to1444
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Druckbereich für Grafiken per VBA automatisch fest

Druckbereich für Grafiken per VBA automatisch fest
19.08.2015 12:09:30
Benny
Hallo zusammen,
ich erstelle eine große Excel Datei wo ich per Hyperlink auf Detailblätter verweise in denen fast überwiegend nur Grafiken abgelegt sind.
Der Druckbereich soll per VBA definiert werden da jedes Blatt seine eigene Größe hat.
Das Problem ist nun wie folgt:
Dadurch das die Grafiken den Text bei weitem in jede Richtung überragen wird der Druckbereich nur automatisch bis zum Text und nicht bis an den Rand der Grafik definiert.
Manuell ist das kein Problem aber dadurch das sich die Grafiken regelmäßig ändern benötige ich dafür ein Makro.
Es wäre phantastisch wenn jemand von Euch Spaß daran hätte sich dieses Problems anzunehmen.
Vorab vielen Dank für Eure Unterstützung.
beste Grüße
Benny

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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

Anzeige
AW: Gedankenspielereien
20.08.2015 09:01:20
Benny
Hallo Michael,
vielen Dank für die schnelle Rückantwort.
Leider reicht mein Excel Wissen wahrscheinlich nicht aus um Deine Rückantwort zu verstehen. Ich habe auch das Gefühl, dass ich wahrscheinlich mein Problem nicht konkret genug beschrieben habe, deshalb versuche ich es noch einmal.
Es gibt ein HAUPT Tabellenblatt wo div. Einträge vorhanden sind. In diesem HAUPT Tabellenblatt gibt es wiederum einige Zellen wo ich einem Rahmen ein Makro zugeordnet habe, damit der User darüber in ein anderes Tabellenblatt springen kann.
Private Sub Goto2FA()
If Not Sheets("2FA").Visible Then
Sheets("2FA").Visible = True
End If
Sheets("2FA").Select
Range("A1").Select
End Sub
In diesen ca. 50 Tabellenblättern sind überwiegend Grafiken (*.png) eingefügt worden, die nur eine kleine Text-Überschrift haben.
Jetzt kommt das eigentliche Problem.
Wenn ich einen Druckbereich festlegen möchte in einem Tabellenblatt wo NUR Text vorhanden ist dann kann ich den äußeren Druckbereich über "Strg. + Shift + Ende" definieren.
Wie kann ich einen Druckbereich automatisch per VBA definieren, wenn die Grafiken außerhalb des o.g. Druckbereich sind, sie aber zu dem Ausdruck dazu gehören?
Dieses Makro sollte am besten universal für alle 50 + n Tabellenblätter funktionieren und die Auswahl anbieten es in DIN A4 hoch/quer und DIN A3 hoch/quer ausdrucken zu können.
Ich hoffe ich habe mich jetzt deutlicher ausgedrückt und hoffe das Du mir trotzdem hilfst.
Vielen Dank für Deine Mühe.
beste Grüße
Benny

Anzeige
Gedankenspielereien - eher Logik als Excel
20.08.2015 13:43:57
Michael
Hi Benny,
es geht (erst einmal) nicht direkt um "Excel-Wissen", sondern um Logik.
Ich habe Dir mal ne Datei mit Grafiken erstellt, mit einigem Text im ersten Blatt.
Sieh Dir bitte die Kommentare und die dazugehörigen Blätter *und die jeweilige Seitenansicht* mal an.
Ich hoffe doch, daß es so weit verständlich ist.
*Wenn* Du überhaupt mit einer Skalierung der Bilder einverstanden bist, können wir über die Programmierung reden.
Datei: https://www.herber.de/bbs/user/99710.xls
Schöne Grüße,
Michael

Anzeige
Nachtrag
21.08.2015 14:27:22
Michael
Hi Benny,
hast Du Dir die Datei angesehen und begriffen, worauf ich hinaus möchte?
Bitte stelle Fragen, wenn Dir etwas unklar ist.
Drucken IST leider ein relativ komplexes Thema, und ich bemühe mich, Dir zunächst einmal verständlich zu machen, worauf überhaupt zu achten ist, *bevor* man das Programmieren beginnt.
Für sehr hochwertige Grafiken ist Excel für meinen Geschmack eh nicht geeignet; in besserer Qualität können sie mit reinen Grafikprogrammen gedruckt werden.
Das wiederum kann man auch von Excel bzw. via Batch-Datein steuern; siehe dazu auch den heutigen Thread: https://www.herber.de/forum/archiv/1440to1444/t1443560.htm#1443560
Irfanview kostet nix und ist für die Steuerung "von außen" bestens geeignet: http://www.irfanview.de/
Schöne Grüße,
Michael

Anzeige
AW: Nachtrag
24.08.2015 11:26:18
Benny
Hallo Michael,
sorry das ich mich nicht gemeldet hatte aber ich war beruflich unterwegs.
Es ist prima das Du Dich bemühst mir etwas zu erklären, aber ich glaube immer noch das wir am Thema vorbeischreiben.
Ich habe ein Tabellenblatt worin sich Grafiken befinden. Die meisten sind SnapShots aus PDF oder Worddateien Dateien. Wenn ich davon 2 oder 3 auf einem Tabellenblatt eingefügt habe übersteigt es meistens den normalen DIN A4 Druckbereich.
Mit einfachen Tastenkombinationen kann man den max. Druckbereich ermitteln wenn es sich um Text handelt. Ich möchte lediglich wissen ob es so etwas auch für Grafiken gibt.
Soll bedeuten, ich gehe in mein Tabellenblatt drücke irgendwelche Tastenkombinationen oder lasse das durch ein Makro machen und schwups kommt der Inhalt entweder auf A4 oder A3 auf den Drucker heraus. Mehr nicht. Ich brauch dafür kein Grafikprogramm und auch keine hoch komplizierten Berechnungen. Es muss einfach nur lesbar ausgedruckt werden.
Kannst Du mir immer noch dabei helfen oder ist das zu einfach für Dich?
beste Grüße
Benny

Anzeige
Na, dann so
25.08.2015 21:02:52
Michael
Hi Benny,
hier die grundsätzliche Logik; stecke den Code bitte in ein Modul:
Option Explicit
Sub PA_Anpassen_Schleife()
Dim shp As Shape
Dim a As Variant
Dim s As String
Dim maxr&, maxc&, r&, c&
Dim sh As Worksheet
For Each sh In Worksheets
s = sh.PageSetup.PrintArea
If Len(s)  maxc Then maxc = c
If r > maxr Then maxr = r
End If
Next
MsgBox "Tabellenblatt:      " & sh.Name & vbLf & _
"Printarea original: " & s & vbLf & _
"Printarea neu:      " & a(0) & ":" & sh.Cells(maxr, maxc).Address
End If
Next
End Sub
Happy Exceling,
Michael

Anzeige
AW: Na, dann so
26.08.2015 09:47:16
Benny
Hallo Michael,
so langsam scheinen wir uns zu nähern. Zumindest gibt es jetzt schon mal eine Routine die einen Output liefert, wenn es auch nur Message Boxen (siehe Download) sind :-).
Deine Routine durchläuft alle 56 offenen Tabellenblätter und eruiert ob Sie anscheinend druckbar sind oder nicht.
Es wäre prima wenn diese Routine nur jeweils immer das aktive Tabellenblatt oder die aktivierten Tabellenblätter berücksichtigt. Des Weiteren wäre es angenehm wenn die Auswahl zwischen A3 und A4 möglich wäre.
Leider druckt Deine Routine nicht. Die Fehlermeldung habe ich Dir hier mit angehangen (siehe Download).
Weiterhin vielen Dank für Deine Ausdauer.
beste Grüße
Martin

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige