ich füge in ein Tabellenblatt per Makro eine Abbildung ein.
Gibt es eine Möglichkeit, diese Abbildung automatisch innerhalb eines fest definierten Zellbereiches vertikal und horizontal zu zentrieren?
Gruß
Carsten
ich füge in ein Tabellenblatt per Makro eine Abbildung ein.
Gibt es eine Möglichkeit, diese Abbildung automatisch innerhalb eines fest definierten Zellbereiches vertikal und horizontal zu zentrieren?
Gruß
Carsten
Mit Range("A1").ColumnWidth, .Top etc. bekommst du die genaue Position der Zelle.
Anhand der Grösse des Bildes umrechnen und einfügen.
Gruss
Chris
ich erstelle eine Kalkulations- und Angebotsdatei. Aus dieser Datei werden automatisch Angebotsblätter mit sämtlichen Produktdaten, Preisen etc. erstellt. Leider sind die Produktbilder die eingefügt werden sollen vom Format her sehr unterschiedlich.
Mit meiner jetzigen Lösung werden die Bilder immer links oben in den Zellbereich eingefügt. Der Abstand zum Rand ist jedoch immer unterschiedlich, sowohl nach rechts als auch nach oben.
Eine andere Möglichkeit gibt es nicht?
Carsten
Kommt auf den Umfang an, aber vielleicht ist es eine Variante, wenn du alle Bilder direkt in der Datei speicherst und mit Visible arbeitest.
Ansonsten müsste sich die Grösse des Bildes auch fesstellen lassen... Object oder Image Width oder so ähnlich
Gruss
Chris
ich kann die Bilder nicht in der Datei speichern, da ich dann ca. 90 Bilder speichern müßte und das würde alle Rahmen sprengen.
Ich werd' noch mal ein bißchen suchen, vielleicht finde ich ja noch eine Lösung.
Danke trotzdem.
Gruß
Carsten
In bestimmten Zellen, Bild-Dateien einfügen. Danach diese Bild-Dateien verkleinern/vergrössern, damit sie immer eine bestimmte Größe haben.
Mit
ActiveSheet.Pictures.Insert(BildName).Select
habe ich in eine Zelle ein Bild eingefügt
Mit
wantedhigh = 150
wantedwide = 120
For Each grafi In ActiveSheet.Shapes
grafi.Select
actualhigh = grafi.Height
actualwide = grafi.Width
If (actualhigh / actualwide) > (wantedhigh / wantedwide) Then
grafi.Height = wantedhigh
Else
grafi.Width = wantedwide
End If
Next
habe ich vergrössert/verkleinert. Das hilft Dir nicht direkt, weil Du nicht verkleinern/vergrössern willst, aber zeigt wie man feststellen kann, wie gross das Bild ist :
actualhigh = grafi.Height
actualwide = grafi.Width
Der Makro Rekorder sagt mir, wenn ich ein Bild verschiebe:
Selection.ShapeRange.IncrementLeft 36.75
Selection.ShapeRange.IncrementTop 8.25
z.B.
So mit einem bisschen Gehirnschmalz, schätze ich, dass Du jetzt herausrechnen kannst, wie viel du verschieben musst, damit du ein Bild zentrierst.
ich werde das ganze mal versuchen. Das größte Problem wird jedoch sein, das dass Höhen-Breiten-Verhältnis der Bilder nie gleich ist. Wenn ich die Bilder jetzt auf eine einheitliche Größe bringe werden die Bilder verzerrt.
Aber wer weiß, vielleicht hilft es doch besser als ich dachte.
Gruß
Carsten
Nee - langsam jetzt - ich schlage nicht vor die Bilder in der Größ zu ändern. (Gehen würde es aber schon)
Ich schlage vor
- Bild einfügen
- Größ vom Bild feststellen
actualhigh = grafi.Height
actualwide = grafi.Width
- Du musst wissen, wie gross der Platz ist, in dem das Bild zu positionieren ist - sagen wir mal x horizontal und y hoch.
- wir nehman an x > actualwide
dann sollte das Bild nach rechts verschoben werden und zwar genau (x-actualwide)*0,5
- wir nehman an y > actualhigh
dann sollte das Bild nach unten verschoben werden und zwar genau (y-actualhigh)*0,5
- dass machst Du mit Selection.ShapeRange.IncrementLeft bzw.
Selection.ShapeRange.IncrementTop
Da ist nichts mit vergösseren/verkleinern. Wobei es nicht dagegen spricht das Bild IN BEIDE RICHTUNGEN zu vergrösseren/verkleinen (um Verzerrungen zu vermeiden)
(Wenn x
Wenn x kleiner als actualwide oder y kleiner als actualhigh dann muss man verkleinern. Siehe hierzu die Schleife im anderen Beitrag. Zu beachten - in dieserSchleife wird NICHT verzerrt. Diese Schleife vergößert/verkleinert BEIDE axen
Wird schon klappen
das Bild soll mittig im Bereich F5:H27 positioniert werden.
Gruß
Carsten
Danke
Carsten
Du hättest schreiben sollen "man kann"...meine VBA Kenntnisse stoßen da mal wieder an ihre Grenzen.
Könntest Du's ein bißchen genauer beschreiben?
Gruß
Carsten
Ja, das Bild soll immer innerhalb dieses Bereiches eingefügt/eingepasst werden.
Danke und schönes Wochenende im voraus.
Gruß
Carsten
vom Prinzip her klappt das Super. Das Bild wird jedoch immer in der Breite angepaßt. Bei manchen Bildern kommt es dann vor, dass es in der Höhe weit über den Bereich hinausgeht.
Was muß ich ändern, damit das Bild optimal in den Rahmen eingepaßt wird?
Hast Du da noch eine Idee?
Gruß
Carsten