110 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo liebe Community,

folgendes Problem:

Ich habe eine Artikelliste, welche alle Artikel samt Parameter definiert. Im Feld "D2" habe ich eine Datenabfrage sitzen, welche sich auf die Artikelnummern beschränkt. Nun möchte ich unter Abhängigkeit des im Feldes "D2" stehenden Wertes, Bilddateien aus einer Quelle einfügen lassen. Sprich:

D2 = "123456" → *Starte Makro* → *Öffne mir das Bild mit der Art.-Nr. "123456" aus Pfad "C\Bilder\Test"* → Füge mir Bild "123456" in Zelle F ein.

Das Makro sollte in diesem Sinne dynamsich sein, also wenn sich die Datenfrage auf den Wert "1234567" ändert, entsprechend auch das Bild "1234567" aus der benannten Quelle eingefügt werden.

Klasse wäre, wenn das eingefügte Bild gleichzeitig auf ein gewisses Format zugeschnitten wird (z.B. 300x400).

Falls es von Interesse ist: es handelt sich hierbei um PNG-Dateien.

Ich habe mich schon durch´s Forum gekämpft, komme nur leider auf keinen grünen Zweig.

der folgende Beitrag kommt meinem Anliegen schon sehr nahe: https://supportnet.de/fresh/2005/11/id1193541.asp

Ich bekomme den dort definierten Code leider nicht zum laufen, egal wie ich ihn anpasse... Möglicherweise liegt es an Excel 2019 (?)

Im Voraus vielen Dank für eure Mühen! :)

Beste Grüße,

Tobias

8 Antworten

0 Punkte
Beantwortet von m-o Profi (16.2k Punkte)
Hallo Tobias,

was klappt denn bei dir nicht? Ist die Ausführung von Makros bei dir zugelassen (Excel-Optionen - Trust-Center - Makro-Einstellungen)? Stimmt die Pfadangabe für die Bilder?

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,

danke für deine Schnelle Rückmeldung.

Es kommt "Laufzeitfehler 1004 - Die Insert-Eigenschaft des Pictures-Objektes kann nicht zugeordnet werden

Die Debugging-Funktion markiert diesen Part als Fehler:

ActiveSheet.Pictures.Insert(Pfad & Cells(Wiederholungen, 1) & ".png").Select

Gruß,

Tobias
0 Punkte
Beantwortet von m-o Profi (16.2k Punkte)

Hallo Tobias,

wenn ich deine Frage richtig lese, steht der Name des Bildes in der Spalte D.

Mit der Codezeile wird aber der Dateiname aus Spalte A gesucht. Du müsstest die Zeile also in

ActiveSheet.Pictures.Insert(Pfad & Cells(Wiederholungen, 4) & ".png").Select

ändern.

Gruß

M.O.

0 Punkte
Beantwortet von
Gesagt getan, leider trotzdem nicht des Rätsels Lösung...

Irgendwo muss sich der Fehlerteufel eingeschlichen haben.

Auf jeden Fall mal danke für deine Hilfe.

Hier mal der ganze Code:

Option Explicit

Sub Bilder_einfügen()
Dim Pfad As String, Wiederholungen As Long
Pfad = "S:\Test"
For Wiederholungen = 2 To Range("D65536").End(xlUp).Row
Cells(Wiederholungen, 6).Activate
ActiveSheet.Pictures.Insert(Pfad & Cells(Wiederholungen, 4) & ".png").Select
Next
End Sub

Grüße,

Tobias
0 Punkte
Beantwortet von m-o Profi (16.2k Punkte)
 
Beste Antwort

Hallo Tobias,

bei deinem Pfad fehlt am Schluss der Backslash. Ich habe das Makro mal so angepasst, dass die Bilder mit einer bestimmten Breite und entsprechend skalierter Höhe eingefügt werden. Mit der Größe kannst du ruhig etwas experimentieren:

Option Explicit

Sub Bilder_einfügen()
Dim Pfad As String
Dim Wiederholungen As Long
Dim strBild As String
Dim Bildbreite As Long
Dim Bildhoehe As Long
Dim meinBild

Pfad = "S:\Test\"

For Wiederholungen = 2 To Range("D65536").End(xlUp).Row
   'Name des einzulesenden Bildes ermitteln
   strBild = Pfad & Cells(Wiederholungen, 4) & ".png"
   'Bildhöhe und Bildbreite einlesen
   Set meinBild = LoadPicture(strBild)
   Bildbreite = meinBild.Width
   Bildhoehe = meinBild.Height

   'Bild in Spalte F einfügen, 7 cm Breit - 1 cm = 28,35 pt - und Höhe entsprechend skaliert
    ActiveSheet.Shapes.AddPicture strBild, msoFalse, msoTrue, Cells(Wiederholungen, 6).Left, Cells(Wiederholungen, 6).Top, 198.45, 198.45 * Bildhoehe / Bildbreite

Next
End Sub

Gruß

M.O.

0 Punkte
Beantwortet von
Bearbeitet
Hallo M.O.

vielen Dank für deine Hilfe!

Zuerst dachte ich, dass der Code nicht funktioniert.. es kam immer eine Fehlermeldung, dass das Bild falsch definiert sei. Ich bin testweise von einem png auf ein jpeg umgestiegen und siehe da, es funktioniert!

Komisch ist dennoch, sobald ich mehrere Bilder in den Ordner lege, möchte er trotzdem nur das erste Bild anzeigen...

X.jpeg fügt er ohne Probleme ein

Y.jpeg - Laufzeitfeher ´53´: Datei nicht gefunden

Im Ordnerverzeichnis liegen beide Dateien korrekt benannt abgespeichtert ab..

trotzdem Tausend Dank Dir. Vielleicht hast Du ja noch eine Idee.

Beste Grüße,

Tobias
0 Punkte
Beantwortet von m-o Profi (16.2k Punkte)
Hallo Tobias,

da er ja ein Bild findet, kann es fast nur am Namen des Bildes hängen (oder der Erweiterung).

Beachte bitte auch, dass keine Leerzeilen in Spalte D zwischen den Bildnamen sein dürfen, sonst kommt die von dir angesprochene Fehlermeldung.

Gruß

M.O.
0 Punkte
Beantwortet von

Guten Morgen M.O.

Du hattest recht... warum auch immer hat Windows aus einem jpeg ein jpg gemacht... es funktioniert! smiley

nochmals vielen Dank Dir!

Beste Grüße,

Tobias

...