Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Bilder per Makro einfügen - Bild versetzt seitlich
#1
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
Antworten Top
#2
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.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • opa_oli
Antworten Top
#3
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?
Antworten Top
#4
Hallöchen,
Zuweilen ergeben sich seltsame Effekte wenn das Seitenverhältnis gesperrt ist. Prüf das mal.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
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
Antworten Top
#6
Hallöchen,

wo hast Du das vorgeschlagene Top und Left?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
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.
Antworten Top
#8
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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • opa_oli
Antworten Top
#9
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
Antworten Top
#10
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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste