Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1420to1424
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bilder aus einem Ordner in Zelle einfügen

Bilder aus einem Ordner in Zelle einfügen
17.04.2015 14:41:12
puma_888

Hallo zusammen,
ich habe einen Code, der mir ein Bild aus dem Ordner "Sample Pictures" in die Zelle B6 bzw. D6 einfügt, wenn in dieser Zelle der entsprechende Name der Bildbezeichnung steht. Dies funktioniert soweit auch ganz gut. Nun zu meiner Frage. Wie müsste ich diesen Code erweitern, damit es mir, eine MsgBox anzeigt mit der Meldung "kein Bild hinterlegt" wenn in der Celle B6 oder D6 ein Wort steht, für das kein Bild mit der entsprechenden Bildbezeichnung im Ordner "Sample Pictures" hinterlegt ist. Wie ich eine entsprechende MsgBox mit den entsprechenden Worten aufrufe ist mir klar, ich komm gerade noch nicht auf den rest des Codes. Momentan sieht der Code folgendermaßen aus. Vielleicht kann mir jemand weiterhelfen :).

Private Sub Worksheet_Activate()
Dim strPfad As String
Dim picBild As Picture
Dim strPfad1 As String
Dim picBild1 As Picture
Worksheets("Vergleichsformular").DrawingObjects.Delete
On Error Resume Next
strPfad = "C:\Users\Public\Pictures\Sample Pictures\"
Set picBild = Worksheets("Vergleichsformular").Pictures.Insert(strPfad & Range("B6"). _
Value & ".jpg")
With picBild
.Top = Range("B6").Top + 2
.Height = 90
.Left = Range("B6:C6").Left + (Range("B6:C6").Width - picBild.Width) / 2
End With
strPfad1 = "C:\Users\Public\Pictures\Sample Pictures\"
Set picBild1 = Worksheets("Vergleichsformular").Pictures.Insert(strPfad1 & Range("D6"). _
Value & ".jpg")
With picBild1
.Top = Range("D6").Top + 2
.Height = 90
.Left = Range("D6:E6").Left + (Range("D6:E6").Width - picBild1.Width) / 2
End With
End Sub

Gruß
Markus

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bilder aus einem Ordner in Zelle einfügen
17.04.2015 15:07:30
EtoPHG
Hallo Markus,
Ohne auf diesen Code-Wahnsinn einzugehen: Warum schreibst du nicht einfach in die Zellen unter dem Bild den Text "Kein Bild hinterlegt"? Dieser wird dann durch das Bild überdeckt, wenn eines vorhanden ist, oder bleibt zur Info da stehen. Warum noch eine Msgbox?
Gruess Hansueli

AW: Bilder aus einem Ordner in Zelle einfügen
17.04.2015 15:33:58
puma_888
Hallo Hansueli,
danke für deine Antwort, ja wäre genauso denkbar den Text in die Zellen zu schreiben. Den gesamten Code musst du auch nicht beachten, mir geht es eigtl. um diese Zeile
Set picBild = Worksheets("Vergleichsformular").Pictures.Insert(strPfad & Range("B6").Value & ".jpg")

Durch die Set- Anweisung weis ich ja der Variablen "picBild" das entsprechende Bild mit der Bildbezeichnung zu. Mein Problem ist, wie ich dem Programm klar mache, das in der Zelle ja auch ein Text stehen kann, der keiner Bezeichnung eines Bildes zugeordnet werden kann und dann der Text "kein Bild hinterlegt" in die Zelle geschrieben wird.
Gruß
Markus

Anzeige
AW: Bilder aus einem Ordner in Zelle einfügen
20.04.2015 10:42:41
puma_888
Hallo Hajo,
ich habe mir die Beispiele angeschaut und versucht auf mein Problem anzuwenden und meinen bisherigen Code umzuschreiben leider funktioniert das immer noch nicht ganz. Ich versteh immer noch nicht wie ich den Code schreiben muss, dass er zuerst im Bilder Ordner schaut, ob ein Bild mit der entsprechenden Bezeichnung aus "B6" bzw. "D6" hinterlegt ist und wenn das nicht der Fall ist soll eine MsgBox angezeigt werden und wenn ein Bild hinterlegt ist soll er mir dieses Bild wie im Code hinterlegt in die entsprechende Zelle einfügen. Vllt. kannst du mir ja sagen, was an meinem Code verändert werden müsste, danke.
Public strPfad As String
Private Sub Worksheet_Activate()
Dim picBild As String
Dim picBild1 As String
Worksheets("Vergleichsformular").DrawingObjects.Delete
strPfad = "C:\Users\Public\Pictures\Sample Pictures\"
picBild = strPfad & Range("B6") & ".jpg"
picBild1 = strPfad & Range("D6") & ".jpg"
If Dir(picBild) = "" Then
Call MsgBox("Für Produkt1 ist kein Bild hinterlegt", vbExclamation, "Hinweis")
Else
With ActiveSheet.Shapes.AddPicture(picBild, True, True, Range("B6"))
.Top = Range("B6").Top + 2
.Height = 90
.Left = Range("B6:C6").Left + (Range("B6:C6").Width - Picture.Width) / 2
End With
End If
If Dir(picBild1) = "" Then
Call MsgBox("Für Produkt2 ist kein Bild hinterlegt", vbExclamation, "Hinweis")
Else
With ActiveSheet.Shapes.AddPicture(picBild, True, True, Range("D6"))
.Top = Range("D6").Top + 2
.Height = 90
.Left = Range("D6:E6").Left + (Range("D6:E6").Width - Picture.Width) / 2
End With
End If
End Sub

Gruß
Markus

Anzeige
Erkläre: funktioniert immer noch nicht ganz (owT)
20.04.2015 11:14:59
EtoPHG

AW: Erkläre: funktioniert immer noch nicht ganz (owT)
20.04.2015 11:26:08
puma_888
Hallo,
bei ausführen des Codes wird immer die MsgBox für beide Zellen aufgerufen, auch wenn ein Bild für eine Zelle hinterlegt ist. Es wird also nie ein Bild in die entsprechende Zelle eingefügt.
Gruß
Markus

Debuggen mit Einzelschritt,
20.04.2015 12:23:03
EtoPHG
Hallo Markus,
Für so was ist der Debugger in VBA eingebaut.
Setzte auf der ersten Codelinie einen Breakpoint (Klick in den linke grauen Balken im Editierfenster).
Wechsle das Tabellenblatt (hin und zurück). Der VBE öffnet sich mit der Ausführungsmarkierung auf dem Breakpoint.
Mit F8 kannst du jetzt Schritt für Schritt abarbeiten.
Wenn du mit dem Cursor über Variablen fährst, siehst du deren Inhalt.
Ich würde jetzt mal behaupten, dass die Bilddateien nicht dort liegen oder nicht so heissen, wie es der Code erwartet.
Gruess Hansueli

Anzeige
AW: Debuggen mit Einzelschritt,
20.04.2015 13:39:52
puma_888
Hi Hansueli,
ich bin mit dem Debugger bereits den Code durchgegangen und er zeigt mir dann auch für "picBild" den Wert "C:\Users\Public\Pictures\Sample Pictures\Name6.jpg" aber er springt trotzdem gleich in die MsgBox und sagt, dass kein Bild hinterlegt ist, obwohl ich ein Bild mit der Bezeichnung "Name6.jpg" im Ordner befindet.
Bei meinem ersten Code hat es mir die Bilder in den Zellen angezeigt, jedoch hatte ich dort noch nichts integriert, dass den Benutzer darauf hinweist, falls kein Bild im Ordner hinterlegt wird und beispielsweise eine MsgBox angezeigt wird.
Public Sub Worksheet_Activate()
Dim strPfad As String
Dim picBild As Picture
Dim picBild1 As Picture
Worksheets("Vergleichsformular").DrawingObjects.Delete
On Error Resume Next
strPfad = "C:\Users\Public\Pictures\Sample Pictures\"
Set picBild = Worksheets("Vergleichsformular").Pictures.Insert(strPfad & Range("B6"). _
Value & ".jpg")
With picBild
.Top = Range("B6").Top + 2
.Height = 90
.Left = Range("B6:C6").Left + (Range("B6:C6").Width - picBild.Width) / 2
End With
strPfad = "C:\Users\Public\Pictures\Sample Pictures\"
Set picBild1 = Worksheets("Vergleichsformular").Pictures.Insert(strPfad & Range("D6"). _
Value & ".jpg")
With picBild1
.Top = Range("D6").Top + 2
.Height = 90
.Left = Range("D6:E6").Left + (Range("D6:E6").Width - picBild1.Width) / 2
End With
End Sub 
Jedoch wusste ich nicht genau wie ich in diesem Code eine If-Funktion integrier, bei der zuerst überprüft wird ob ein Bild im Ordner hinterlegt ist und wenn nicht, dass dann eine MsgBox angezeigt wird. Durch die Set Funktion wird halt immer sofort das Bild in der Tabelle gesetzt.
Gruß
Markus

Anzeige
AW: Debuggen mit Einzelschritt,
20.04.2015 14:04:31
EtoPHG
Hallo,
Schick mir deinen Rechner und beweise dir, dass du irgendwo einen Fehler machst.
Meine Dir(Filename) funktioniert tadellos unter Windows/Excel.
Die Messagebox wird nur aufgerufen, wenn die Dir() Methode die Datei nicht findet!
Gruess Hansueli

Auf den Vorschlag mit dem Zellentext...
20.04.2015 14:27:57
EtoPHG
den ich im ersten Thread gemacht hab, gehst du gar nicht ein, Markus
Wenn deine erste Codeversion funktioniert, warum setzt du sie nicht ein?
Schreib in die Zellen B6 du D6 einfach "Für Produkt ist kein Bild hinterlegt" und schon sieht der Anwender, dass nichts vorhanden ist. Andernfalls wir der Text durch das vorhandene Bild überdeckt.
Das ist doch einfacher als die überflüssige,nervige und benutzerstressende Messagebox, oder nicht?
Gruess Hansueli

Anzeige
AW: Auf den Vorschlag mit dem Zellentext...
20.04.2015 15:58:26
puma_888
Hi Hansueli,
deine Idee mit dem Zellentext, kann ich bei mir leider nicht umsetzten, da ich in der selben Zelle, in der es mir das Bild anzeigen soll auch die Produktbezeichnung unter dem Bild angezeigt wird. D.h. wenn das Bild nicht im Ordner hinterlegt ist bekommt der Benutzer trotzdem die Bildbezeichnung in dieser Zelle angezeigt. Deswegen möchte ich nicht das ein Text "Für Produkt ist kein Bild hinterlegt in der selben Zelle erscheint, sondern der Benutzer einfach nur eine kurze MsgBox angezeigt bekommt, sodass er bescheid weiß, dass das Programm funktioniert aber kein Bild im Ordner hinterlegt ist.
Den letzten Code den ich dir gesendet habe, wird auch in meinem Programm eingesetzt. Diesen Code hatte ich in einem anderen Forum in ähnlicher Art und weise gefunden und habe in für mein Programm angepasst damit es mir die Bilder in der Zelle so darstellt, wie ich es gerne hätte. Dies funktioniert auch Einwand frei. Nun wollte ich jedoch den Teil mit der MsgBox mit einbauen und dies über eine If Funktion umsetzten. Ich habe aber leider noch keine funktionierende Lösung hinbekommen. Ein Problem ist dabei, dass durch die Set-Funktion das Bild immer sofort in der Tabelle gesetzt wird und der variablen "picBild" innerhalb der Set-Funktion das Bild zugewiesen wird.
Gruß
Markus

Anzeige

411 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige