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

Bilder in VBA eindeutig identifizieren

Forumthread: Bilder in VBA eindeutig identifizieren

Bilder in VBA eindeutig identifizieren
11.02.2016 13:15:38
Thomas
Hallo Zusammen,
ich habe schon oft hier Lösungen gefunden aber nun habe ich eine Frage zu der ich keine Lösung gefunden habe.
Ich habe eine Excel Datei mit diversen eingefügten Bildern, die diverse Stati darstellen. Die Bilder sind ein grüner und ein roter Punkt mit gleichen Abmessungen(!). Ich will nun aus den Bildern mittels VBA weiterverarbeitbare Daten generieren, also z.B. in die Zelle in der sich das Bild befindet den Wert "grün" oder "rot" eintragen.
Dazu brauche ich aber eine einzigartige Eigenschaft dieses Shapes. Ich habe es mit .height und.width probiert aber die Abmessungen sind gleich.
Fällt jemandem eine andere Möglichkeit ein? Wenn man eine Möglichkeit hätte die Bildgröße in Bit/Bytes zu ermitteln, wäre die sicherlich unterschiedlich.
Oder vlt. hat jemand eine andere Idee?
Danke!
VG
Thomas

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bilder in VBA eindeutig identifizieren
11.02.2016 13:42:35
ChrisL
Hi Thomas
Bilder lassen sich über den Namen eindeutig identifizieren:
Sub Makro1()
Dim pic As Object
For Each pic In ActiveSheet.Pictures
MsgBox pic.Name
Next pic
End Sub

Sinn und Zweck der Übung erschliesst sich mir aber nicht.
cu
Chris

Anzeige
AW: Bilder in VBA eindeutig identifizieren
11.02.2016 13:53:37
Thomas
Hallo Chris,
das ist schon klar. Aber das hilft mir nicht.
Okay ich lade mal ein Beispiel hoch. Ich muss wissen ob in ZelleA1 ein rotes oder ein grünes Bild ist. Das selbe in Zelle A2 usw. Die Namen sind nicht eindeutig, da sich diese Bilder regelmäßig ändern. Über Namen kann ich also NICHT identifizieren ob das Bild rot oder grün ist.
https://www.herber.de/bbs/user/103463.xlsx
Andere Ideen?
Gruß
Thomas

Anzeige
AW: Bilder in VBA eindeutig identifizieren
11.02.2016 14:16:27
ChrisL
Hi Thomas
Ich lasse die Frage offen.
Es ist mir weiterhin unklar was das soll. Jemand macht die Bilder ja rein, warum also nachträglich identifizieren und in einen Zellwert umwandeln. Könntest den User ja den Zellwert ändern lassen und hieraus ergibt sich das Bild (ginge sogar mit bedingter Formatierung).
cu
Chris

Anzeige
AW: Bilder in VBA eindeutig identifizieren
11.02.2016 14:39:09
Rudi
Hallo,
warum nimmst du nicht einfach ein rotes Quadrat und einen grünen Kreis aus den Formen?
Da kannst du einfach die Farbe bestimmen.
Gruß
Rudi

AW: Bilder in VBA eindeutig identifizieren
11.02.2016 15:50:17
Thomas
Hallo Leute,
ich seh schon, niemand mag meine Frage beantworten ;)
Ja, WENN ich Einfluss auf die Ursprungsdatei hätte, hätte ich die Lösung schon längst, da fallen mir selbst 1000 Möglichkeiten ein.
ABER ich habe keinen Einfluss auf die Ausgangsdatei und die enthält diese bescheidenen Bilder nun mal (und nichts anderes was ich zur Identifikation benutzen kann) und das lässt sich nun eben nicht ändern.
Also brauche ich noch immer eine Lösung, wie ich mit der gegebenen Situation umgehen kann.
Trotzdem danke für Eure Antworten.
Gruß
Thomas

Anzeige
AW: Bilder in VBA eindeutig identifizieren
11.02.2016 16:50:28
ChrisL
Hi Thomas
Ja, WENN du das schon vorher so beschrieben hättest, dann hätten wir dein Problem auch verstanden und wären motiviert gewesen dir eine Lösung zu suchen :)
Könntest tatsächlich ausprobieren das Bild temporär extern zu speichern, etwa so...
https://www.herber.de/forum/archiv/1128to1132/1130567_Grafik_oder_Bereich_mit_VBA_als_Bild_speichern.html
Anschliessend FileSize prüfen (ich glaube innerhalb Excel nicht möglich) und mit Kill die temporäre Datei wieder löschen.
cu
Chris

Anzeige
AW: Bilder in VBA eindeutig identifizieren
11.02.2016 18:11:14
firmus
Hi Thomas,
wer wird den gleich die Flinte ins Korn werfen, bevor Du nicht jede Eigenschaft von Picture und Shapes auf Differenzen untersucht hast ?
Ich habe es mit Deiner Datei mit den Index(Picture) und Index(Shapes) versucht.
Bei Shapes bekommst Du eine laufende Nummer, bei Picture bekommst Du für den grünen Kreis eine "2", für das rote Rechteck eine "1".

Sub Makro1()
Dim pic As Object
Dim i As Long
For Each pic In ActiveSheet.Pictures
i = i + 1
Cells(i, 5).Value = pic.Name
Cells(i, 6).Value = pic.Index
Cells(i, 7).Value = ActiveSheet.Shapes(i).ID
Cells(i, 8).Value = ActiveSheet.Shapes(i).Name
Next pic
i = i
End Sub
Das benötigt natürlich noch die Verifikation mit größerer Datenmenge, aber ein Ansatz?
Gruß
Firmus
Geduld - in Deinem Wortschatz?

Anzeige
AW: Bilder in VBA eindeutig identifizieren
11.02.2016 19:14:06
Thomas
Hallo Zusammen,
danke für Eure Lösungsvorschläge, wahrscheinlich war meine Beschreibung mangelhaft. Und ja, es war vor dem Essen, von daher die Ungeduld... :)
@firmus: genau so was hatte ich gesucht, leider geht's bei der Originaldatei nicht. Da ist sowohl Object.Index als auch Shape.ID unterschiedlich, die Namen leider auch.
@ChrisL: die Lösung sieht vielversprechend aus, das werde ich mal umsetzen. Morgen.
Ich hänge noch mal das bereinigte Original an, falls jemand noch mal rumprobieren möchte...
Danke!
VG
Thomas
https://www.herber.de/bbs/user/103477.xlsx
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Bilder in VBA eindeutig identifizieren


Schritt-für-Schritt-Anleitung

Um Bilder in Excel eindeutig zu identifizieren und ihre Eigenschaften zu nutzen, kannst Du folgende Schritte befolgen:

  1. Öffne Deine Excel-Datei, die die Bilder enthält.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject", dann "Einfügen" > "Modul".

  4. Kopiere den folgenden Code in das Modul:

    Sub Bild_Identifizieren()
       Dim pic As Object
       Dim i As Long
       For Each pic In ActiveSheet.Pictures
           i = i + 1
           Cells(i, 1).Value = pic.Name       ' Bildname
           Cells(i, 2).Value = pic.Index      ' Bildindex
           Cells(i, 3).Value = ActiveSheet.Shapes(i).ID ' Shape-ID
           Cells(i, 4).Value = ActiveSheet.Shapes(i).Name ' Shape-Name
       Next pic
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus (ALT + F8, wähle "Bild_Identifizieren" und klicke auf "Ausführen").

Mit diesem Makro werden die Namen, Indizes und IDs der Bilder in die Zellen geschrieben, was Dir hilft, die Bilder eindeutig zu identifizieren.


Häufige Fehler und Lösungen

  • Fehler: Das Makro findet keine Bilder.

    • Lösung: Stelle sicher, dass Du auf dem richtigen Arbeitsblatt bist und dass die Bilder tatsächlich eingefügt sind.
  • Fehler: Die Shape-ID und der Bildindex stimmen nicht überein.

    • Lösung: Überprüfe, ob die Bilder und Shapes korrekt zugeordnet sind. Manchmal kann das Hinzufügen oder Entfernen von Bildern die Indizes ändern.

Alternative Methoden

Falls das Identifizieren der Bilder über den VBA-Code nicht funktioniert, kannst Du auch folgende Alternativen ausprobieren:

  1. Bilder als Formen nutzen: Anstatt Bilder zu verwenden, füge Formen (z.B. Kreise oder Quadrate) ein und ändere die Füllfarbe. So kannst Du die Farbe direkt mit VBA überprüfen.

  2. Bilder extern speichern: Speichere die Bilder temporär auf dem Computer und prüfe die Dateigröße. Das kann helfen, unterschiedliche Bilder zu identifizieren.

    ' Beispiel zum Speichern eines Bildes
    Sub Bild_Speichern()
       ActiveSheet.Pictures(1).Copy
       With CreateObject("Word.Application")
           .Visible = False
           .Documents.Add
           .Selection.Paste
           .ActiveDocument.SaveAs "C:\Temp\Bild1.png"
           .Quit
       End With
    End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du Bilder in VBA identifizieren kannst:

  • Farben identifizieren: Verwende ein Makro, das die Formate von Bildern prüft und in die Zelle schreibt, ob das Bild rot oder grün ist.

  • Vergleich von Bildgrößen: Wenn Du die Möglichkeit hast, die Bilddateien extern zu speichern, kannst Du die Dateigrößen vergleichen, um festzustellen, welches Bild welches ist.


Tipps für Profis

  • Verwendung von Conditional Formatting: Nutze die bedingte Formatierung in Excel, um die Zellen basierend auf den Bildinformationen visuell hervorzuheben.

  • Optimierung des Makros: Wenn Du eine große Anzahl von Bildern hast, optimiere das Makro, um die Ausführungszeit zu verkürzen. Verwende Application.ScreenUpdating = False zu Beginn und True am Ende des Makros.


FAQ: Häufige Fragen

1. Wie kann ich die Farbe eines Shapes in VBA überprüfen?
Du kannst die Fill.ForeColor.RGB-Eigenschaft nutzen, um die Farbe eines Shapes zu identifizieren.

2. Gibt es eine Möglichkeit, Bilder in Excel zu importieren und automatisch zu benennen?
Ja, Du kannst VBA verwenden, um Bilder zu importieren und ihnen eindeutige Namen zuzuweisen, basierend auf ihrer Reihenfolge oder anderen Eigenschaften.

3. Wie kann ich Bilder in Excel gruppieren?
Du kannst die Bilder auswählen und mit der rechten Maustaste klicken, um die Option "Gruppieren" zu wählen. Das hilft, mehrere Bilder unter einem einzigen Objekt zu verwalten.

4. Was ist der Unterschied zwischen Picture und Shape?
Ein Picture ist ein Bild, das in Excel eingefügt wurde, während Shapes auch geometrische Formen und andere grafische Elemente umfassen.

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