Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bilder proportional nach Höhe in Excel-D einbetten

Bilder proportional nach Höhe in Excel-D einbetten
20.03.2018 15:59:39
M
Hallo in die Runde,
ich möchte in einer Preisliste Bilder einbetten. Bilder bekomme ich per VBA-Script rein, diese werden auch eingebettet. Allerdings werden die Bilder nur korrekt in der Höhe skaliert (wie gewünscht auf die Zellenhöhe). Ich habe aber keine Ahnung wie ich es hinbekomme, damit die Bilder auch korrekt die proportional richtige Breite bekommen... (Im Moment habe ich mal die Breite gleich der Höhe gesetzt, das ist aber nicht proportional).
Was muss ich tun? Danke für jegliche Hilfe!
Folgendes habe ich "zusammengezimmert":
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 2 To 10000
Dim strpath As String
strpath = "H:\Bilder_" 'Pfad anpassen
If ActiveSheet.Range("B" & i).Value > 0 Then
On Error Resume Next
ActiveSheet.Range("A" & i).Select
Set Zelle = ActiveCell
If Not Dir(strpath & Range("B" & i).Value & "_1.jpg") = "" Then
Set Bild = ActiveSheet.Shapes.AddPicture(strpath & Range("B" & i).Value & "_1.jpg",  _
False, True, 0, 0, 0, 0)
With Bild
.Top = Zelle.Top + 5
.Left = Zelle.Left + 5
.Height = Zelle.Height - 10
.Width = .Height
.Placement = 1
End With
End If
End If
Next
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bilder proportional nach Höhe in Excel-D einbe
20.03.2018 16:15:58
Daniel
Hi
lass die Breite mal einfach weg.
normalerweise müsste, wenn du nur einen Wert von Höhe oder Breite angibst, der andere proportional mit geändert werden. (man kann das zumindest für das Bild irgendwo einstellen)
falls das nicht geht, müsstest du dir den Scale-Faktor ausrechnen und diesen dann auf höhe und breite anwenden.
SF =  (Zelle.Height - 10) / .Height
.Height = .Height * SF
.Width = .Width * SF
wenn das Bild komplett in die Zelle passen soll, müsstst du den Scale-Faktor für Höhe und Breite bestimmen und dann den kleineren davon nehmen:
SF = Worksheetfunction.Min((Zelle.Height - 10) / .Height, (Zelle.Width - 10) / .Width)
Gruß Daniel
Anzeige
AW: Bilder proportional
20.03.2018 16:16:20
Rudi
Hallo,
versuch mal
  Set Bild = ActiveSheet.Shapes.AddPicture _
(strpath & Range("B" & i).Value & "_1.jpg", False, True, 0, 0, 0, 0)
With Bild
.LockAspectRatio = True
.Top = Zelle.Top + 5
.Left = Zelle.Left + 5
.Height = Zelle.Height - 10
.Placement = 1
End With

Gruß
Rudi
Anzeige
Zu bedenken auch: Stauchung durch Excel
21.03.2018 07:33:34
lupo1
... falls das bei Dir eine Rolle spielt (meist nur bei kreisrunden Gegenständen auf dem Bild, die dann zur Ellipse werden).
Stretcht man die Höhe des Objekts (bzw. der Zellen) um 13/12, wird die Stauchung annähernd beseitigt. Das hängt aber vom Hardware-Einzelfall ab.
AW: Bilder proportional nach Höhe in Excel-D einbetten
21.03.2018 08:33:57
M
Hallo zusammen,
erst mal ein herzliches Danke für die schnellen Antworten!
Leider hat noch nichts wirklich zum Erfolg geführt, die Infos von Daniel und Rudi wirken sich zwar auf "Height" aus, aber nicht auf "Width". Die Bildhöhe hat sich schon mit meinen ersten Versuchen korrekt auf die in Excel eingestellte Zellenhöhe angepasst, die Breite wehrt sich aber hartnäckig.
Rudi: .LockAspectRatio = True - Hier passiert keine Veränderung zu meinem Script.
Daniel:
SF = (Zelle.Height - 10) / .Height
.Height = .Height * SF
.Width = .Width * SF
Hier werden die Bilder leider komplett auf 10% verkleinert, aber auch wieder quadratisch... Der Scale-Faktor greift irgendwie nicht. Muss ich da noch was ergänzen bzw. den Scale-Faktor von .Height anders berechnen und/oder anders an .Width übergeben? Wenn ich bei .Width einen festen Wert eingebe wird dieser korrekt akzeptiert, also "reagiert" die Bildbreite auf .Width! Ich kriege es nur nicht hin, den korrekten Wert aus .Heigth auszulesen und bei .Width einzugeben.
Liegt das evtl. an der Excel 2010-Version? Hier werden Bilder wohl nur mit Der "ActiveSheet.Shapes. AddPicture"-Variante korrekt eingebettet, mit der früheren "ActiveSheet.Pictures.Insert"-Variante wird das Bild zwar korrekt skaliert, aber nicht eingebettet...
Gruß,
Michael
Anzeige
AW: Bilder proportional nach Höhe in Excel-D einbe
21.03.2018 10:22:27
Daniel
Hi
ich habe mir jetzt für dich mal die Mühe gemacht, den Befehl AddPicture in der Hilfe nachzuschlagen (geht ganz einfach: Befehl markieren und F1 drücken).
und dort steht folgendes zu den Parametern Hight und Width (das sind die beiden letzten)
"Die Breite/Höhe des Bilds in Punkten (Geben Sie „-1" ein, um die Breite/Höhe der vorhandenen Datei beizubehalten)."
wenn du bei AddPicture also -1 statt 0 eingibst, dann wird das Bild in der Orignalgröße eingelesen und die brauchst du natürlich, um das Bild im richtigen Breiten-Längen-Verhältnis verkleinern zu können.
Damit sollten dann auch die Vorschläge von Rudi und mir funktionieren.
Set Bild = ActiveSheet.Shapes.AddPicture(strpath & Range("B" & i).Value & "_1.jpg", False, True, 0, 0, -1, -1)
Gruß Daniel
Anzeige
AW: Bilder proportional nach Höhe in Excel-D einbe
21.03.2018 12:58:32
M
Hallo Daniel,
es "tut" jetzt!
Dein Hinweis auf den "-1"-Wert und die Kombination aus den vorherigen Tipps bzw. meiner ursprünglichen "Zimmerei" haben das Problem gelöst - herzlichen Dank für die prompte Hilfe.
Apropo Hilfe: Mit "F1" hatte ich schon nachgesehen, da steht bei mir zwar ""Die Breite/Höhe des Bildes in Punkten", aber nichts von "(Geben Sie „-1" ein, um die Breite/Höhe der vorhandenen Datei beizubehalten)." - unterschiedliche Excel-Versionen?
Danke nochmals an alle!
Freundliche Grüße,
Michael
Anzeige
AW: Bilder proportional nach Höhe in Excel-D einbe
21.03.2018 13:33:27
Daniel
Hi
kann durchaus sein.
ich hab hier 2013.
bei 2010 wurde auch noch die Offline-Hilfe mitgeliefert.
die kann natürlich auch nochmal anders aussehen, als die Online-Seiten, auf die mittlerweile verwiesen wird.
Gruß Daniel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige