Clever-Excel-Forum

Normale Version: VBA - Bilder per Makro einfügen - Bild versetzt seitlich
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo und ein frohes und gesundes Neues Jahr.

Folgendes Problem bekomme ich nicht gelöst:
Ich habe eine Liste (Mangelliste), in der ich zeilenweise die zugehörigen Bilder einfügen will.
In Spalte "I" kommt ein Hyperlink auf die Bilddatei
In Spalte "J" kommt das Bild selbst (Orientierung links und oben)

Der Code selbst funktioniert einwandfrei.

Aus einem mir nicht nachvollziehbaren Grund wird bei ein paar Bildern (immer die gleichen) das Bild selbst um ca. 530 Punkte nach rechts versetzt dargestellt (ca. 3 Zellen) und nicht linksbündig in der Zelle in Spalte J selbst.
Das geschieht beim Befehl, die Höhe anzupassen.

Hilfe/Tipp wäre echt toll.

Danke schon einmal vorab

Opa Oli

Code:
Nrt = Cells(ActiveCell.Row, 1).Value   

Bild = "M:\325\08 Bauleitung\11 LOP\EG\LOP B" & Nrt & ".jpg"
   
'Hyperlink zum Bild einfügen in Spalte I
    Cells(ActiveCell.Row, 9).Select
    Bereich = "I" & ActiveCell.Row
    With Worksheets(1)
    .Hyperlinks.Add Anchor:=.Range(Bereich), _
    Address:="M:\325\08 Bauleitung\11 LOP\EG\LOP B" & Nrt & ".jpg", _
    ScreenTip:="Bild öffnen", _
    TextToDisplay:=Cells(ActiveCell.Row, 2).Value & "\LOP B" & Nrt & ".jpg"
    End With
   
'Bild einfügen in Spalte J
    Cells(ActiveCell.Row, 10).Select
    ActiveSheet.Pictures.Insert(Bild).Select
[color=#333333][size=small][font=Monaco, Consolas, Courier, monospace]    ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Select[/font][/size][/color]
[color=#333333][size=small][font=Monaco, Consolas, Courier, monospace]    Selection.Placement = xlMove[/font][/size][/color]
    Selection.ShapeRange.Height = 62.3622047244
Hallöchen,

wenn Du das Bild in Spalte J einfügen willst müsstest DU 10 nehmen und nicht 9.
Vorteilhaft wäre auch beim eingefügten Bild Top und Left anhand der Zelle auszurichten.
Hallo und Danke.

Korrekter Hinweis, aber leider war das nur ein Kopierfehler im Code hierher.

Ich habe aber gerade gesehen, dass die entscheidenden 2 Zeilen nicht im Code sind:

Code:
    ActiveSheet.Pictures.Insert(Bild).Select
    ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Select
    Selection.Placement = xlMove
    Selection.ShapeRange.Height = 62.3622047244

Das Einfügen klappt noch linksbündig aber bei dem Befehl für die Höhe >Height< springt dann das Bild nach rechts
Dummerweise nicht bei jedem Bild sondern nur bei einigen.

Noch eine Idee?
Hallöchen,
Zuweilen ergeben sich seltsame Effekte wenn das Seitenverhältnis gesperrt ist. Prüf das mal.
So, jetzt habe ich noch einige Einstellungen ausprobiert mit



- Seitenverhältnis gesperrt => raus

- Relativ zum Original => mal raus / mal rein

- die Breite auch noch angegeben




Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Width = 83.2436669398
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 62.36220472444



und dabei die Optionen der 3 Zellpositionseinstellungen ausprobiert.



Neue Erkenntnis:

nach der Breiteneinstellung bleibt das Bild noch linksbündig und springt erst mit "Height" nach rechts.



Noch eine Idee?



Opa Oli
Hallöchen,

wo hast Du das vorgeschlagene Top und Left?
Die Einstellung der Zellen selbst in der Spalte ist immer mit Orientierung oben und links.
Es muss an etwas anderem als Standardthemen liegen, denn bei einem Teil der Bilder klappt es, bei einem anderen eben nicht.

Es scheint aber an den Bilddateien selbst zu liegen bzw. wie Excel mit denen umgeht, denn wenn ich eines der Funktionierenden umbenenne, dann klappt es auch in der Zeile, in der sonst das Bild nach rechts rutscht.
Es sind aber alles ganz normale verkleinerte "Handy-Bilder" aus dem gleichen Gerät.

Nochmals:
Das Bild laden klappt immer.
Jedes Bild wird in der Zelle in zu großem Format links und oben bündig eingefügt.
Dann wird das Bild ausgewählt und die Breite auf das gewünschte Maß verringert.
Das Bild ist immer noch links und oben.
Jetzt wird das Bild auf die Höhe gebracht.

=> und nun werden die Bilder unterschiedlich in der Tabelle platziert.

Ich bin echt am verzweifeln. Ich finde keine Logik.
Hallöchen,

ich kann mich auch nur wiederholen. Da Dir hier kein anderer User Vorschläge macht wird würde ich Top und Left zumindest mal in Erwägung ziehen 17
Hallo schauan,

auch diesen Rat habe ich natürlich ausprobiert.
Ich habe von einem funktionierenden Bild Left und Top ausgelesen und von einem nicht funktionierenden (siehe im Code die Kommentare mit "Stop")
"Top" funktioniert ja wie mitgeteilt einwandfrei.

Bei "Left" scheint es so zu sein, dass Excel die Bildmitte als Referenz nimmt und nicht die linke Ecke des Bildes.

Gebe ich für das nicht funktionierende Bild die Left-Zahl des funktionierenden Bildes als Wert vor, dann ist es MITTIG unter dem richtigen Bild platziert und nicht linksbündig an der Zelle , wie noch beim Einfügen mit falscher Bildgröße.

Code:
        'Bild einfügen in Spalte J
        Cells(i, 10).Select
        ActiveSheet.Pictures.Insert(Bild).Select
        ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Select
        Selection.Placement = xlMove
'       Selection.ShapeRange.LockAspectRatio = msoFalse

        Selection.ShapeRange.Width = 83.2436669398

'        links = Selection.ShapeRange.Left
'        Stop

        Selection.ShapeRange.Left = 1185


Aber damit wir uns beide wichtigeren Themen im Leben widmen können, danke ich Dir nochmals SEHR für die Unterstützung und ich "lebe jetzt mal damit"  ??
Immerhin ist es besser, mit 99% die Aufgabe zu lösen als mit 105% nicht ?

Grüße

Opa Oli
Hallöchen,

wenn ich ein Bild in die linke obere Ecke z.B. von C3 haben will, dann mache ich das so:

Code:
Sub Makro1()
    ActiveSheet.Pictures.Insert("C:\Test\6692.jpg").Select
    Selection.ShapeRange.LockAspectRatio = msoFalse
    Selection.Top = Cells(3, 3).Top
    Selection.Left = Cells(3, 3).Left
    Selection.Height = Cells(3, 3).Height
    Selection.Width = Cells(3, 3).Width
End Sub

wobei ich vielleicht noch überlege, ob das ohne Select geht und was man och vereinfachen könnte Smile
Seiten: 1 2