Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bild einfügen über SVERWEIS (Workaround)

Bild einfügen über SVERWEIS (Workaround)
08.07.2019 15:35:30
Bernhard
Einleitend möchte ich festhalten, dass ich keine wundersame Lösung für das Verknüpfen von Bildern mittels SVERWEIS gefunden habe! Folgend möchte ich skizzieren, wie ich einen Anwendungsfall lösen konnte, der möglicherweise auch für andere User ein Thema sein kann.
Ich habe keinerlei Erfahrung in VBA-Programmierung und die im folgenden verwendeten Codes sind NICHT von mir. Ich habe lediglich minimale Detailanpassungen vorgenommen und Code-Stücke zusammengefügt. Ich möchte mich nachdrücklich bei allen solidarischen Profi-Excel-/VBA-Usern bedanken, die Codes veröffentlichen, Hilfestellungen leisten und Erklärungen geben. Ich kann nicht mehr die Energie aufbringen, zu recherchieren, woher ich die folgend verwendeten Code-Zeilen habe und möchte mich bei den Erstellern mit der Bitte um Verständnis vielmals entschuldigen.
Die folgende Anleitung funktioniert jedenfalls in den Excel Versionen 2003 und 2007 und die (optionale) Photoshop-Anleitung für alle Photoshop-Versionen von CS2 bis CC.
A) Ausgangs-Situation (vereinfacht dargestellt)
a) In Tabelle „Artikel“ befinden sich ca. 600 Artikel, die eingekauft werden sollen. In dieser Tabelle sind die Artikel zeilenweise gelistet mit jeweils einer eindeutiger Artikelnummer sowie weiteren Angaben zum Artikel (Menge, Einkaufspreise etc.). Der Datenbereich beginnt in Zeile 3.
b) In Tabelle „Fotos“ befinden sich 1.500 Artikel (das Gesamtsortiment des Lieferanten), die zeilenweise gelistet sind mit der eindeutigen Artikelnummer in Spalte A und dem jeweiligen Bild in Spalte B. In dieser Tabelle befinden sich weitere Angaben zu den Artikeln wie EAN-Code und dergleichen. Der Datenbereich beginnt in Zeile 2.
c) Aufgaben:
  • Die richtigen Fotos aus der Tabelle „Fotos“ sollen in die Tabelle „Artikel“ verknüpft bzw. eingefügt werden.

  • Weitere Angaben aus der Tabelle „Fotos“ sollen in die Tabelle „Artikel“ übernommen werden.

  • Die Bilder sollen auch auf anderen PCs angezeigt werden können, also vollständig in Excel eingebettet sein.

  • Schön soll’s auch aussehen!

  • B) Lösungs-Weg
    1) Anwendung von SVERWEIS für Auslesen des EAN-Codes (und anderer Daten)
    =WENN(ISTFEHLER(SVERWEIS(F3;FOTOS!$A$2:FOTOS!$Q$9999;14;FALSCH));0;
    SVERWEIS(F3;FOTOS!$A$2:FOTOS!$Q$9999;14;FALSCH))

  • Formel in Tabelle „Artikel“ an gewünschter Stelle einfügen und mit Drag/Drop runterziehen

  • F3 = Hier befindet sich die eindeutige Artikelnummer

  • FOTOS!$A$2:FOTOS!$Q$9999;14 = Suchbereich aus der Tabelle „Fotos“, wobei in Spalte A (=erste Spalte) die eindeutige Artikelnummer und in Spalte 14 der EAN-Code steht.

  • Fehler abfangen durch WENN(ISTFEHLER): Da nicht bei allen Artikeln ein EAN-Code vorhanden ist, wird ein möglicher Fehler durch SVERWEIS abgefangen und stattdessen „0“ hingeschrieben.

  • 2) Exportieren der Bilder in einen Ordner
  • „Export“ aller Bilder aus Tabelle „Fotos“ mit Hilfe der Speicher-Funktion „Als Website speichern“

  • Website-Export-Format auf Kompatibilität „Internet Explorer 6“ setzen (damit wird eine doppelte Ausgabe der Bilddateien verhindert).

  • Export auf Tabelle einschränken

  • Es wird eine .htm-Datei angelegt und ein Ordner im gleichen Verzeichnis, in dem sich alle Bilder befinden.

  • Diesen Ordner umbennen in „bilder“

  • Excel exportiert die Bilder DER REIHENFOLGE nach (Zeile für Zeile) und benennt sie entsprechend, also heißt das erste Bild „image001.jpg“

  • ACHTUNG: Ist das exakt gleiche Bild mehrfach vorhanden, wird es dennoch nur einmal exportiert. Es muss bei dieser Methode zwingend darauf geachtet werden, dass die Menge der exportierten Fotos mit den vergebenen Dateinamen übereinstimmt! Beispiel: 1.500 Fotos sind vorhanden, das erste Bild ist „image001.jpg“, das letzte Bild ist „image1500.jpg“

  • 3) Optional: Bilder verbessern über Photoshop-Batch-Verarbeitung
  • Die Bilder liegen in unterschiedlichen Formaten vor, für die Endverarbeitung sollen diese alle gleich aussehen und „schön“ in der Artikel-Liste angezeigt werden.

  • In Photoshop einen kleinen Aktions-Satz anlegen:

  • „Bild zuschneiden“ auf Pixelfarbe oben links (weiße Leerfläche um die Artikelbilder wird entfernt)

  • „Bild einpassen“: gleiche Werte für Horizontal und Vertikal eingeben (z.B. 150x150px)

  • „Arbeitsfläche anpassen“: gleiche Werte für Horizontal und Vertikal eingeben, etwas größer als unter Bild einpassen, z.B. 160x160px

  • „Speichern unter“ in den Aktionssatz einbeziehen (erspart unnötige Rückfragen von Photoshop)

  • Aktionssatz unter „Stapelverarbeitung“ ausführen

  • Ergebnis: Alle Bilder sind quadratisch, haben die gleiche Größe und ein „bisschen Luft zum Atmen“

  • 4) Deklarierung der Bildnamen in der Fotos-Tabelle
  • Wie unter Punkt B1) beschrieben, werden die Bilder beim Export fortlaufend durchnummeriert. Diese Nummerierung mittels Drag&Drop in einer freien Spalte in der Fotos-Tabelle nachvollziehen: In folgendem Beispiel habe ich in Spalte D beim ersten Artikel einfach „1“ erfasst und mittels Drag&Drop bis zum Ende runtergezogen, beim letzten Artikel steht dann „1500“

  • Bild-Dateiname und relativen Pfad in einer freien Spalte (z.B. E) konstruieren: ="\bilder\image"&TEXT(D2;"000")&".jpg"

  • Formel mittels Drag&Drop runterziehen

  • Neue Spalte nach E anlegen, als „nur Text“ formatieren, Daten aus Spalte E kopieren und mittels „Inhalte einfügen - nur Werte“ einfügen (es wird ein sauberer String-Wert für den später folgenden VBA-Code benötigt).

  • In Spalte F befindet sich nun „\bilder\image001.jpg“ in der ersten Datenreihe, „\bilder\image002.jpg“ in der zweiten Reihe usw.

  • 5) Bilder einfügen über VBA-Code
  • Neues Modul einfügen

  • Code einfügen:

  • Option Explicit
    Private Declare Function KillTimer Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal nIDEvent As Long) As Long
    Private Declare Function SetTimer Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal nIDEvent As Long, _
    ByVal uElapse As Long, _
    ByVal lpTimerFunc As Long) As Long
    Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
    Private Const GC_CLASSNAMEMSEXCEL = "XLMAIN"
    Private objCell As Range
    Private strPicturePath As String
    Private hWnd As Long
    Public Function Grafik(Zelle As Range, Pfad As Range) As String
    Set objCell = Zelle.Cells(1, 1)
    strPicturePath = ThisWorkbook.Path & Pfad.Cells(1, 1).Value
    hWnd = FindWindow(GC_CLASSNAMEMSEXCEL, Application.Caption)
    SetTimer hWnd, 0, 1, AddressOf prcTimer
    End Function
    

    Private Sub Grafik_einfuegen()
    Dim objShape As Picture
    Set objShape = ActiveSheet.Pictures.Insert(strPicturePath)
    With objShape
    .Top = objCell.Top + 1
    .Left = objCell.Left
    .Height = objCell.Height - 8
    .Width = objCell.Width - 8
    End With
    End Sub
    

    Private Sub prcStopTimer()
    KillTimer hWnd, 0
    End Sub
    

    Private Sub prcTimer(ByVal hWnd As Long, ByVal nIDEvent As Long, _
    ByVal uElapse As Long, ByVal lpTimerFunc As Long)
    On Error Resume Next
    Call prcStopTimer
    Call Grafik_einfuegen
    End Sub
    
  • Dieser Code fügt ein Bild in der im ersten Parameter angeführten Zelle, unter Auslesen des relativen Pfads + Bildnamens aus der im zweiten Parameter angeführten Zelle aus.

  • Der absolute Pfad wird automatisch mit Hilfe von „ThisWorkbook.Path“ zusammengebaut.

  • Die Bilder werden entsprechend der Zellgröße eingefügt, wobei sie gleichzeitig um ein paar Pixel kleiner skaliert und minimal innerhalb der Zelle runtergerückt werden.

  • Ergebnis: Absolut einheitliche Ausrichtung der Bilder in den gewünschten Zellen und etwaige Rahmenformatierungen bleiben erhalten.

  • 6) Funktionsaufruf des „Bild-Einfügen-Codes“
  • In Tabelle „Artikel“ in eine beliebige freie Zelle in der ersten Datenreihe, z.B "Y3" folgende „Funktionsformel“ eingeben: =grafik(A3;L3)

  • Erster Wert "A3" = Dort soll das Bild eingefügt werden, also in der ersten Spalte der ersten Datenreihe (vorab Sicherstellen, dass Spalte A auch frei ist)

  • Zweiter Wert "L3" = Dort steht der Pfad und der Bildname, der mittels SVERWEIS ausgelesen wird:
    =WENN(ISTFEHLER(SVERWEIS(F3;FOTOS!$A$2:FOTOS!$Q$9999;6;FALSCH));0;
    SVERWEIS(F3;FOTOS!$A$2:FOTOS!$Q$9999;6;FALSCH))

  • Hinweis: Der Wert „6“ bezieht sich auf die 6. Spalte „F“ in der Fotos-Tabelle. Dort befinden sich der relative Pfad und der Dateiname des Bildes (siehe Punkt 3)

  • Mittels Drag&Drop runterziehen. Leider passiert (fast) nichts. Es wird nämlich keine Formel, sondern eine „Funktions-Formel“ runtergezogen und die „Funktions-Formel“ wird nur bei expliziter Bestätigung ausgeführt. Deshalb noch ein kleiner Code:

  • 7) Code zum automatisierten „Anklicken“ der "Funktionsformel"
  • Neues Modul anlegen

  • Code einfügen:

  • Public Sub F2Enter()
    Dim zelle2 As Object
    Sheets(1).Range("Y1:Y1365").Select
    For Each zelle2 In Selection
    SendKeys "{F2}", True
    SendKeys "{ENTER}", True
    newHour = Hour(Now())
    newMinute = Minute(Now())
    newSecond = Second(Now()) + 2
    waitTime = TimeSerial(newHour, newMinute, newSecond)
    Application.Wait waitTime
    Next zelle2
    End Sub
    

  • In der Zeile „Sheets(1).Range("Y3:Y1365").Select“ ist im Rangebereich der gewünschte Zellenbereich anzugeben

  • Dieser Code geht in jede Zelle im angeführten Range-Bereich, drückt dort „F2“ (Zelle aktivieren) und anschließend „ENTER“. Damit wird die „Funktions-Formel“ ausgeführt.

  • Damit der Code nicht „zu schnell“ ausgeführt wird, ist eine 2-Sekunden-Bremse eingebaut. Dieser Wert kann in der Zeile newSecond = Second(Now()) + 2 geändert werden.

  • Formular-Schaltfläche anlegen und das Makro „F2Enter“ auswählen.

  • Schaltfläche drücken, zuschauen, freuen & FERTIG!

  • Userbild
    Anzeige

    1
    Beitrag zum Forumthread
    Beitrag zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Bild einfügen über SVERWEIS (Workaround)
    10.07.2019 20:09:04
    onur
    Und was genau ist jetzt dein Problem?
    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Entdecke relevante Threads

    Schau dir verwandte Threads basierend auf dem aktuellen Thema an

    Alle relevanten Threads mit Inhaltsvorschau entdecken
    Anzeige
    Anzeige

    Infobox / Tutorial

    Bilder dynamisch mit SVERWEIS in Excel einfügen


    Schritt-für-Schritt-Anleitung

    1. Datenvorbereitung:

      • Erstelle zwei Tabellen: Eine Tabelle namens "Artikel" mit Artikelnummern und eine Tabelle namens "Fotos" mit Artikelnummern und Bildern.
      • Stelle sicher, dass die Artikelnummern in beiden Tabellen übereinstimmen.
    2. SVERWEIS für EAN-Code nutzen:

      • In der Tabelle "Artikel" füge die Formel ein, um den EAN-Code aus der Tabelle "Fotos" abzurufen:
        =WENN(ISTFEHLER(SVERWEIS(F3;FOTOS!$A$2:FOTOS!$Q$9999;14;FALSCH));0;SVERWEIS(F3;FOTOS!$A$2:FOTOS!$Q$9999;14;FALSCH))
    3. Bilder exportieren:

      • Exportiere alle Bilder aus der Tabelle "Fotos" als Website, indem Du die Funktion "Als Website speichern" nutzt. Achte darauf, die Kompatibilität auf "Internet Explorer 6" zu setzen.
    4. Bilder in Photoshop bearbeiten (optional):

      • Verwende Photoshop, um die Bilder gleichmäßig zuzuschneiden und auf die gleiche Größe zu bringen. Lege einen Aktionssatz an, um alle Bilder in das gewünschte Format zu bringen.
    5. VBA-Code zum Einfügen der Bilder:

      • Füge ein neues Modul in VBA ein und kopiere den bereitgestellten Code, um die Bilder dynamisch in die Tabelle "Artikel" einzufügen.
      • Der Code nutzt den Pfad und den Dateinamen, um das Bild in die gewünschte Zelle einzufügen.
    6. Funktionsaufruf:

      • Verwende die Formel =grafik(A3;L3) in der Tabelle "Artikel", um das Bild in die Zelle A3 einzufügen, wobei L3 den Pfad zum Bild enthält.
    7. Automatisierung des Funktionsaufrufs:

      • Erstelle ein weiteres Modul in VBA, um die Funktionsformel automatisch auszuführen, indem Du F2 und ENTER drückst.

    Häufige Fehler und Lösungen

    • Bild wird nicht angezeigt:

      • Stelle sicher, dass der Pfad zum Bild korrekt ist und dass das Bild im angegebenen Verzeichnis vorhanden ist.
    • Fehler bei SVERWEIS:

      • Überprüfe, ob die Artikelnummern in beiden Tabellen identisch sind und ob der Suchbereich korrekt definiert ist.
    • Bilder in unterschiedlichen Größen:

      • Achte darauf, dass die Bilder vor dem Einfügen in Excel gleichmäßig skaliert werden, um ein einheitliches Erscheinungsbild zu gewährleisten.

    Alternative Methoden

    • Excel Bildfunktion:

      • Anstelle von VBA kannst Du die Excel-Bildfunktion verwenden, um Bilder direkt in Zellen einzufügen. Diese Methode ist einfacher, aber weniger dynamisch.
    • Power Query:

      • Nutze Power Query, um Bilder aus einer Datenquelle zu importieren. Diese Methode ist nützlich, wenn Du regelmäßig neue Bilder hinzufügen musst.

    Praktische Beispiele

    • Bilder per SVERWEIS einfügen:

      • In einer Excel-Tabelle mit Artikelnummern in Spalte A und Bildern in Spalte B kannst Du die SVERWEIS-Formel nutzen, um die entsprechenden Bilder automatisch in eine andere Tabelle zu ziehen.
    • Dynamische Bildanzeige:

      • Erstelle eine interaktive Excel-Anwendung, in der Bilder angezeigt werden, wenn Du auf die Artikelnummer klickst oder einen Doppelklick machst.

    Tipps für Profis

    • Zellen quadratisch formatieren:

      • Stelle sicher, dass die Zellen, in die Du die Bilder einfügst, quadratisch sind, um eine bessere Darstellung zu gewährleisten.
    • Verwendung von Platzhaltern:

      • Nutze Platzhalterbilder, bis die echten Bilder geladen werden, um die Ladezeiten zu optimieren.
    • Bildgrößen anpassen:

      • Verwende VBA, um Bilder beim Einfügen automatisch auf eine bestimmte Größe zu skalieren, damit sie in die vorgesehenen Zellen passen.

    FAQ: Häufige Fragen

    1. Wie füge ich mehrere Bilder gleichzeitig ein? Um mehrere Bilder gleichzeitig einzufügen, kannst Du den VBA-Code anpassen, um eine Schleife für jeden Artikel in der Tabelle zu erstellen.

    2. Funktioniert das auch in neueren Excel-Versionen? Ja, die beschriebenen Methoden funktionieren auch in neueren Excel-Versionen, jedoch können sich einige Menüoptionen leicht unterscheiden.

    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