Das Clever-Excel-Forum.de - Treffen
... 14.-16. September 2018 im Allgäu ...

Bilder in Excel darstellen
#1
Hallo,
ich habe mehrere hundert sehr ähnliche Bilder einer Strömungssimuilation eines Ventils, die ich anhand von zwei Kriterien (Druck / Winkelstellung) miteinander vergleichen will.
Die Bilder sind alle mit automatisch vergebenen Dateinamen versehen.
Das heist es gibt eine eindeutige logische Verbindung zwischen den Eingangsparametern und der Filename des Bildes.
z.B.
Druck Winkel  Bild
  1         11    Stroemung_123.png
  1         12    Stroemung_124.png
  2         11    Stroemung_125.png
  2         12    Stroemung_126.png
Ich möchte, dass in einer Zelle das Bild eingeblendet wird, dessen Kriterien ich in zwei Zellen angebe.
z.B.
Schreibe ich in Zelle A1 den Wert "2" und in Zelle A2 den Wert "11", so soll das Bild "Stroemung_125.png" angezeigt werden.
Schreibe ich in Zelle A1 den Wert "1" und in Zelle A2 den Wert "12", so soll das Bild "Stroemung_124.png" angezeigt werden.
Ich möchte dabei allerdings nicht die hunderte Bilder alle manuell in Excel einfügen, sondern lediglich den Dateinamen angeben.
Den Dateinamen möchte ich auch nicht als Tabelle hinterlegen, sondern aus den Kriterien berechnen bzw. aus einer Zuordnungstabelle automatisch zuordnen lassen.
Aber fangen wir erstmal mit der Darstellung eines Bildes in Excel nur anhand des Dateinamen an. Dazu konnte ich bisher keine Lösung finden.
Hat jemand eine Idee?
Vielen Dank und liebe Grüße,
Chris
to top
#2
Hallo Chris,

vielleicht hilft dir diese Seite schon etwas weiter.
Gruß Conny Smile
_______________________________________________________________

Die Summe der Intelligenz auf unserem Planeten ist konstant, aber die Bevölkerung wächst!
to top
#3
Hallöchen,

die Speicherung von vielen Bildern in einer Excel-Datei macht diese doch recht groß und schwerfällig. Das ist um so schwerwiegender, da man ja gar nicht alle Bilder zugleich benötigt. Ich habe mir z.B. in einigen Fällen eine Lösung gebaut, bei der ich per Formel den Bildername ermittle und in einen Hyperlink wandle. Dann kann ich auf den Hyperlink klicken und mir das Bild ansehen.

Bilder und Excel-Datei habe ich dabei zur Vereinfachung in ein eigenes Verzeichnis abgelegt.
In Deinem Fall bräuchte man übrigens eine "Übersetzungsliste", die eine Zuweisung von Bildername und Eingabe ermöglicht. Oder gibt es da einen Algorithmus?
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#4
@Conny: Wow, cooler Input. Allerdings auch sehr überladen. Ich bin leider nicht mehr so fit in Visual Basic. Mir reicht ja fast eigentlich eine Bild-Einfügen Funktion. Die krieg ich aus den ganzen Visual Basic Code leider nicht herausgeschnitten.

@André: Ich möchte die Bilder nicht in der Excel Datei speichern. Ich möchte in der Excel Datei nur den Dateinamen eines Bildes angeben, und dann immer nur ein Bild darstellen. Die Bilder liegen alle in einem Verzeichnis. Den Dateinamen kriege ich bereits generiert. Nur das Anzeigen des Bildes gelingt mir noch nicht. Die "Übersetzungsliste" habe ich mit einer bzw. mehreren Tabellen gemacht.

So soll das ganze optisch aussehen:
Die einzige Funktion die noch fehlt ist, dass der Filename in Zelle D38 das bunte Bild oben ersetzt wenn er sich ändert.
Wenn man einen Slider bewegt, soll das alte Strömungsbild gelöscht und das neue Strömungsbild eingefügt werden.
   

Ich habe mal ein deutlich vereinfachtes Szenario mit den nötigen Bilddateien erstellt, damit ihr euch auf das konzentrieren könnt was mir noch fehlt:
Das Verzeichnis muss man nur nach C: entpacken, dann funktioniert das schon (bis auf die Sache mit dem Bild)

.zip   Excelbild.zip (Größe: 51,19 KB / Downloads: 6)

Wer kann mir da weiterhelfen?

Lieben Gruß,
Chris
to top
#5
Hallo Chris,

füge in ein neues allgemeines VBA-Modul diesen Code ein:
Sub BildlTauschen()
 Dim oBild As Shape
 Set oBild = ActiveSheet.Shapes("Bild1")
 With ActiveSheet.Shapes.AddPicture(ActiveSheet.Range("D34").Value, 0, -1, oBild.Left, oBild.Top, oBild.Width, oBild.Height)
   .PictureFormat.Contrast = oBild.PictureFormat.Contrast
   .PictureFormat.Brightness = oBild.PictureFormat.Brightness
   .PictureFormat.ColorType = oBild.PictureFormat.ColorType
   .PictureFormat.TransparentBackground = oBild.PictureFormat.TransparentBackground
   .PictureFormat.CropLeft = oBild.PictureFormat.CropLeft
   .PictureFormat.CropRight = oBild.PictureFormat.CropRight
   .PictureFormat.CropTop = oBild.PictureFormat.CropTop
   .PictureFormat.CropBottom = oBild.PictureFormat.CropBottom
   .Fill.Visible = oBild.Fill.Visible
   .Line.Visible = oBild.Line.Visible
   .Rotation = oBild.Rotation
   oBild.Delete
   .Name = "Bild1"
 End With
End Sub
Anschließend weist Du den beiden Bildlaufleisten per Rechtsklick > Makro zuweisen... das Makro BildlTauschen zu.

Gruß Uwe


Angehängte Dateien
.xlsm   Bildbetrachtung_Kuwer.xlsm (Größe: 23,15 KB / Downloads: 7)
to top
#6
Hallo Kuwer,

Yes, perfekt funktioniert, vieeeelen Dank!
Ich hab leider grad festgestellt, dass ich VBA doch schon lange nicht mehr kann 22

Nun ist mir leider noch aufgefallen, dass es ein Problem gibt, wenn eine Bilddatei nicht gefunden wird.
Wie kann man das abfangen und als Fehler ausgeben, dass z.B. "die Datei E:\Screenshots\Geschwindigkeit\Geschwindigkeit [Designpunkt 884].png nicht gefunden wurde"? Huh

 
Lieben Gruß,
Chris
to top
#7
Hallo Chris,

Sub BildlTauschen()
 Dim oBild As Shape, strDateiname As String
 strDateiname = ActiveSheet.Range("D34").Value
 If Len(Dir(strDateiname)) Then
   Set oBild = ActiveSheet.Shapes("Bild1")
   With ActiveSheet.Shapes.AddPicture(strDateiname, 0, -1, oBild.Left, oBild.Top, oBild.Width, oBild.Height)
     .PictureFormat.Contrast = oBild.PictureFormat.Contrast
     .PictureFormat.Brightness = oBild.PictureFormat.Brightness
     .PictureFormat.ColorType = oBild.PictureFormat.ColorType
     .PictureFormat.TransparentBackground = oBild.PictureFormat.TransparentBackground
     .PictureFormat.CropLeft = oBild.PictureFormat.CropLeft
     .PictureFormat.CropRight = oBild.PictureFormat.CropRight
     .PictureFormat.CropTop = oBild.PictureFormat.CropTop
     .PictureFormat.CropBottom = oBild.PictureFormat.CropBottom
     .Fill.Visible = oBild.Fill.Visible
     .Line.Visible = oBild.Line.Visible
     .Rotation = oBild.Rotation
     oBild.Delete
     .Name = "Bild1"
   End With
 Else
   MsgBox "Die Datei """ & strDateiname & """ wurde nicht gefunden.", vbInformation
 End If
End Sub

Gruß Uwe
to top


Gehe zu:


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