7.7k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Zusammen,

ich habe eine Frage zu automatischen Einfügen von Bildern, dabei bin ich auf unten kopierten Austausch gestoßen. Ich habe genau die gleiche Anfrage, allerdings mit dem Zusatz, dass die eingefügten Bilder bestimmte Höhen- und Breitenabmessungen haben sollen. Diese Abmessungen sind ebenfalls in der Excel hinterlegt. Während also die Artikel-Nr (zb. ZE1909) in Spalte A steht, steht de Höhe (in mm) in Spalte D, die Breite (ebenfalls in mm) in Spalte E.

Ich bedanke mich für alle Antworten im Voraus recht herzlich - ich selbst habe, ähnlich dem Kollegen in der zitierten Anfrage, kaum Ahnung von Makros.

Gruß
Daniel



Ich besitze eine Exceltabelle mit 3000 Zeilen und ich besitze 3000 Bilder. In der Exceltabelle ist in jeder Zeile die Artikelnummer des entsprechenden Artikels angeführt. Die Bilder befinden sich in einem Ordner sind im JPG - Format und wie die Artikelnummer benannt. Gibt es eine Möglichkeit die Bilder automatisch an die richtige Stelle im Excel-Dokument einzufügen ? Ich habe eigentlich keine Ahnung von Makros und VB. Falls es da eine Möglichkeit gibt, wäre eine besonders umfangreiche Beschreibung super. Vielen Dank im Voraus Andreas


Antwort 1 von coros

Hi Andreas,

kopiere nachfolgendes Makro in ein StandardModul und starte es über eine Befehlsschaltfläche.

Option Explicit

Sub Bilder_einfügen()
Dim Pfad As String, Wiederholungen As Long
Pfad = "C:\"
For Wiederholungen = 2 To Range("A65536").End(xlUp).Row
Cells(Wiederholungen, 3).Activate
ActiveSheet.Pictures.Insert(Pfad & Cells(Wiederholungen, 1) & ".jpg").Select
Next
End Sub


Durch eine Schleife wird der Name aus Spalte A ausgelesen und das passenden Bild in Spalte C eingefügt. Allerdings vermute ich mal, dass man bei Deinen Bildern, die Du einfügen möchtest, auch noch etwas an der Größe beim Einfügen ändern muss, da die Bilder mit aller Wahrscheinlichkeit zu groß für die Zelle sein werden. Aber teste erst mal das Makro und dann sehen wir weiter. Du musst allerdings noch in dem Makro in der Zeile

Pfad = "C:\"

den Pfad eintragen, wo Deine Bilder liegen. Stehen Deine Artikelnamen, welche ja auch gleich die Bildernamen sind in einer anderen Spalte als A, dann musst Du in dem Makro in der Zeile

For Wiederholungen = 2 To Range("A65536").End(xlUp).Row

eine andere Spaltenbezeichnung angeben.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.


Antwort 2 von awittemann

Hallo Oliver,

das ist ja der Hit. Klappt alles super.

Einziges Problem ist noch, dass er hängen bleibt und debuggen will, wenn mal eine Leerzeile oder eine Artikelnummer ohne Bild drin ist.

Gibt es eine Möglichkeit, dass das Script Zeilen, die es nicht zuordnen kann einfach überspringt ?

P.S. Deine Homepage ist der Hammer, da werde ich mich jetzt sowieso mal durcharbeiten!

Grüße

Andreas



Antwort 3 von coros

Hi Andreas,

mit nachfolgendem Makro funktioniert es sicherlich besser.

Option Explicit

Sub Bilder_einfügen()
Dim Pfad As String, Wiederholungen As Long
On Error Resume Next
Pfad = "C:\"
For Wiederholungen = 2 To Range("A65536").End(xlUp).Row
Cells(Wiederholungen, 3).Activate
ActiveSheet.Pictures.Insert(Pfad & Cells(Wiederholungen, 1) & ".jpg").Select
Next
End Sub


Ist eigentlich das gleiche Makro nur dass dort der Befehl "On Error Resume Next" eingearbeitet ist, der nichts weiter macht, als bei einem Fehler diesen zu überspringen.

MfG,
Oliver

6 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Daniel,

etwas ähnliches wurde schon einmal gefragt. Schau dir mal diesen Thread an: KLICK MICH!

In welche Zelle sollen die jeweiligen Bilder denn eingefügt werden?

Gruß

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

danke für die wahnsinnig schnelle Antwort, den Threat hatte ich übersehen.
Zu deiner Frage: Die Bilder sollen in Spalt G jeweils in Höhe der Artikel-Nr.

Zwei Probleme habe ich:

Einerseits zeigt er bei der damaligen Lösung von Oliver gar keine Bilder, springt in die letzte beschriebene Zeile der Spalte A, zeigt aber auch keine Fehlermeldungen.

Dann sind die Bilder von der Größe her ja unterschiedlich. Was müßte ich denn angeben, damit das Makro die Längeneinheiten in der Tabelle ausliest?

Gruß
Daniel
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Daniel,

das folgende Makro gehört in ein Standard Modul deiner Arbeitsmappe.
Die Pfadvorgabe musst du entsprechend anpassen:

Sub Bilder_einfügen()
Dim Pfad As String
Dim strDatnam As String
Dim lngZeile As Long
Dim dblBreit As Double
Dim dblHoch As Double

On Error Resume Next
'Pfad anpassen
Pfad = "C:\Users\Test\Pictures\"
'Ab Zeile 1 werden alle Zeilen in Spalte A durchlaufen
For lngZeile = 1 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'Name des Bildes steht in Spalte A ohne Endung - Endung ggf. anpassen
strDatnam = Pfad & ActiveSheet.Cells(lngZeile, 1).Value & ".jpg"
'Breite und Höhe werden berechnet; 1 mm = 2,835 pt
dblBreit = ActiveSheet.Cells(lngZeile, 5).Value * 2.835 'Breite steht in Spalte E in mm
dblHoch = ActiveSheet.Cells(lngZeile, 4).Value * 2.835 'Höhe steht in Spalte D in mm
'Bild einfügen
ActiveSheet.Shapes.AddPicture strDatnam, msoFalse, msoTrue, Cells(lngZeile, 7).Left, Cells(lngZeile, 7).Top, dblBreit, dblHoch
Next lngZeile

End Sub


Dabei wird die Spalte A von Zeile 1 bis zum Ende durchlaufen und die Bilder werden in der entsprechenden Größe in Spalte G eingefügt.

Gruß

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

es funktioniert! Wirklich! Ich bin begeistert!
Vielen vielen Dank!
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

gern geschehen :-).

Gruß

M.O.
0 Punkte
Beantwortet von
6 Jahre später und ICH bin immer noch begeistert!

DANKE DANKE!
...