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

Forumthread: Bilder zu URLs anzeigen

Bilder zu URLs anzeigen
12.02.2020 19:54:04
Kisska
Hallo zusammen,
ich suche nach einem einfachen Makro für meine persönliche Mappe, um Bilder aus den URLs anzeigen zu lassen.
Mein Tabellen-Aufbau:
A2 bis A27: Artikelnummer
B2 bis A27: Buchstabe
C2 bis A27: URL (URL setzt sich zusammen aus Text sowie Eingabe in den Spalten A und B)
D2 bis A27: hier sollen die Bilder zu den URLs aus der Spalte C angezeigt werden
Im Internet habe ich eine Lösungsvariante über Funktionen gefunden:
https://www.computerbase.de/forum/threads/internet-bild-link-in-excel-anzeigen.1215653/
Code lautet:

Function InsertPicFromURL(URL As String) As String
With ActiveSheet.Pictures.Insert(URL)
.Top = Application.Caller.Top + 1
.Left = Application.Caller.Left + 1
.Height = Application.Caller.Height - 2
End With
InsertPicFromURL = ""
End Function

Über diese Formel ab D2 lassen sich die Bilder tatsächlich anzeigen:

=PEROSONAL.XLSB!nsertPicFromURL(C2)

Was mir bei dieser Lösung nicht gefällt:
Wenn ich neue Daten in A und B eingebe bzw. einkopiere, dann verändern sich meine zusammengesetzten Hyperlinks in der Spalte C, aber in der Spalte D werden keine neuen Bilder automatisch erzeugt. Dafür muss man die Zellen D2 bis D27 mit Enter abschließen oder jeweils F2 drücken. Das ist umständlich.
Man könnte mit diesem Makro das Blatt neu berechnen: ActiveSheet.Cells.Dirty
aber diese Prozedur beansprucht viel Leistung und dauert recht lange oder es ist diese Funktion, die Prozesse verlangsamt.
Darum die Frage: Gibt es eine bessere Lösung, die nicht soviel Rechnerleistung beansprucht? Nach einer Eingabe/Einkopieren neuer Daten in A und B sollen neue Bilder in D in Abhängigkeit der URLs in C angezeigt werden, vorher müssen aber die alten Bilder gelöscht werden.
Mir ist es egal, ob die Bilder interaktiv zu den URLs angezeigt werden oder erst nach Ausführen des Makros.
Viele Grüße
Kisska
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bilder zu URLs anzeigen
14.02.2020 09:07:53
fcs
Hallo Kisska,
eine Lösung via Persönliche Arbeitsmappe müsste alle - nicht nur die geänderten Links aktualisieren.
Dabei bleibt die Formel für die Bilder nicht permanent in den Zellen, sondern wird nur zum AKtualisieren temporär eingefügt.
Hier die angepasste Funktion und das Makro zur Aktualisierung der Bilder.
Public Function InsertPicFromURL(URL As String) As String
On Error GoTo Fehler
If URL  "" Then
With ActiveSheet.Pictures.Insert(URL)
.Top = Application.Caller.Top + 1
.Left = Application.Caller.Left + 1
.Height = Application.Caller.Height - 2
End With
End If
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, _
vbInformation + vbOKOnly, "InsertPicFromURL - Linkk: " & URL
End Select
End With
InsertPicFromURL = ""
End Function
'Makro für Version in persönlicher Arbeitsmappe
Public Sub Bilder_aktualisieren()
Dim wks As Worksheet
Dim objShape As Shape
Dim Zeile As Long
Dim StatusCalc As Long
With Application
'Berechnungsmodus merken
StatusCalc = .Calculation
'Berechnungsmodus auf manuell setzen
.Calculation = xlCalculationManual
End With
Set wks = ActiveSheet
With wks
'Alte bilder in SPalte D löschen
For Each objShape In .Shapes
If objShape.TopLeftCell.Row > 1 And objShape.TopLeftCell.Column = 4 Then
objShape.Delete
End If
Next
'Zellen in Spalte D abarbeiten
For Zeile = 2 To .Cells(.Rows.Count, 3).End(xlUp).Row
'Formel um Grafik zu Hyperlink in Zelle zu holen in Spalte D einfügen
.Cells(Zeile, 4).FormulaR1C1 = "=PERSONAL.XLSB!InsertPicFromURL(RC[-1])"
Next
'In Zellen ab Zeile 2 in Spalte D "'" eintragen
.Range(.Cells(2, 4), .Cells(.Cells(.Rows.Count, 3).End(xlUp).Row, 4)) = "'"
End With
With Application
'Berechnungsmodus zurücksetzen
.Calculation = StatusCalc
End With
End Sub
Wenn du die Funktionalität komplett in deine Datei integrierst, dann kann man es so steuern, dass jeweils nur die geänderten Links aktualisiert werden müssen.
Hier Beispiel-Datei.
https://www.herber.de/bbs/user/135197.xlsm
LG
Franz
Anzeige
super! Zusatzfrage
15.02.2020 15:43:23
Kisska
Hallo Franz,
hab beide deiner Makros getestet und alles funktioniert perfekt! Besten Dank dafür !!!
Ich habe eine Zusatzfrage:
Wenn das Bild nicht existiert, dann wird ein weißes Viereck eingefügt. Kann man in der Spalte E mit einem "x" ausweisen, ob das Bild existiert ? Oder noch besser direkt den Buchstaben aus der Spalte B in die Spalte E übernehmen, wenn das Bild existiert.
Mein Ziel ist es, zu den Bildern eines Artikels, die existieren, die Buchstaben aus der Spalte B nebeneinander zu schreiben.
Beispiel: Zu dem Artikel "123" gibt es drei Bilder: 123_B, 123_H und 123_X
Mit deinem obigen Makro bekomme ich diese drei Bilder angezeigt und kopiere aus der Spalte B die gefundenen Buchstaben B, H und X in die Spalte E rein. Dann kopiere ich die Spalte E in die temporäre Spalte G, entferne die Leeren, kopiere die Spalte G und transponiere diese in H1 und hab dann: H1 = B, I1 = H und J = X.
Hinweis: Zu jedem Artikel finde ich i.d.R. 2 bis 5 Bilder, die Buchstaben aus der Spalte B sind immer unterschiedlich.
Viele Grüße
Kisska
Anzeige
AW: super! Zusatzfrage
15.02.2020 16:26:49
Kisska
Hier habe ich einen Code für das Transponieren gefunden und etwas angepasst:
Sub TransponierenOhneLeere()
ActiveSheet.Range("E2:E27").Copy
ActiveSheet.Range("H1").Select
Selection.PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End Sub

(Quelle: https://www.herber.de/forum/archiv/1524to1528/1527581_Spalte_kopieren_und_transponieren.html)
Was dem Code noch fehlt ist das Entfernen von Leerzellen und löschen von alten Daten ab der Spalte H bevor neue Daten aus der Spalte E transponiert werden. Da reichen meine VBA-Kenntnisse nicht aus.
VG, Kisska
Anzeige
AW: super! Zusatzfrage Bilder per Formel einfügen
18.02.2020 12:13:57
fcs
Hallo Kisska,
ich hab mal versucht deine Zusatfrage irgendwie umzusetzen.
Schau mal ob das in die gewünschte Richtung geht.
Datei mit Ereignismakros - Markierung mit "neu" wenn Link geändert /eingefügt wird.
https://www.herber.de/bbs/user/135265.xlsm
Textdatei mit den Makros für die persönliche Makroarbeitsmappe.
https://www.herber.de/bbs/user/135264.txt
LG
Franz
Anzeige
AW: super! Zusatzfrage Bilder per Formel einfügen
20.02.2020 01:09:11
Kisska
Hallo Franz,
zunächst vielen Dank für deine Zeit und die Lösungsvorschläge.
Ich habe deine "Textdatei mit den Makros für die persönliche Makroarbeitsmappe" getestet, jedoch werden alle Werte aus der Spalte B 1:1 kopiert statt nur diejenigen, wo die Bilder tatsächlich existieren.
Ich habe inzwischen meine Tabelle um 2 Spalten nach rechts verschoben und mehr Zeilen hinzugefügt für die Anzeige der Bilder gleich für 7 Artikel (diese können potentiell jeweils Bilder A bis Z haben).
Hierfür verwende ich folgende Makros:
1) Makro um Bilder zu finden ohne Funktionen

'Quelle: https://superuser.com/questions/940861/how-can-i-display-a-url-as-an-image-in-an-excel-cell
Option Explicit
Dim rng As Range
Dim cell As Range
Dim Filename As String
Sub URLPictureInsert()
Dim theShape As Shape
Dim xRg As Range
Dim xCol As Long
On Error Resume Next
Application.ScreenUpdating = False
'Alle vorhandenden Bilder l?schen
For Each theShape In ActiveSheet.Shapes
theShape.Delete
Next theShape
Set rng = ActiveSheet.Range("E2:E183")   '  0 Then   '
2) Nachdem die Bilder nach dem ersten Makro angezeigt sind, kopiere ich die jeweiligen Buchstaben maniell in die Spalte G ein.
3) Makro für Transponieren

Sub TransponierenOhneLeere()
'Artikel1
With ActiveSheet
.Range("G2:G27").Copy
.Range("J1").PasteSpecial Paste:=xlValues, Transpose:=True
.Range("J1:AI1").SpecialCells(xlCellTypeBlanks).Delete shift:=xlToLeft
End With
'Artikel2
With ActiveSheet
.Range("G28:G53").Copy
.Range("J2").PasteSpecial Paste:=xlValues, Transpose:=True
.Range("J2:AI2").SpecialCells(xlCellTypeBlanks).Delete shift:=xlToLeft
End With
'Artikel3
With ActiveSheet
.Range("G54:G79").Copy
.Range("J3").PasteSpecial Paste:=xlValues, Transpose:=True
.Range("J3:AI3").SpecialCells(xlCellTypeBlanks).Delete shift:=xlToLeft
End With
'Artikel4
With ActiveSheet
.Range("G80:G105").Copy
.Range("J4").PasteSpecial Paste:=xlValues, Transpose:=True
.Range("J4:AI4").SpecialCells(xlCellTypeBlanks).Delete shift:=xlToLeft
End With
'Artikel5
With ActiveSheet
.Range("G106:G131").Copy
.Range("J5").PasteSpecial Paste:=xlValues, Transpose:=True
.Range("J5:AI5").SpecialCells(xlCellTypeBlanks).Delete shift:=xlToLeft
End With
'Artikel6
With ActiveSheet
.Range("G132:G157").Copy
.Range("J6").PasteSpecial Paste:=xlValues, Transpose:=True
.Range("J6:AI6").SpecialCells(xlCellTypeBlanks).Delete shift:=xlToLeft
End With
'Artikel7
With ActiveSheet
.Range("G158:G183").Copy
.Range("J7").PasteSpecial Paste:=xlValues, Transpose:=True
.Range("J7:AI7").SpecialCells(xlCellTypeBlanks).Delete shift:=xlToLeft
End With
End Sub
Ich wünschte, ich könnte auf den manuellen Schritt 2 verzichten und alles in einem Rutsch machen.
Kannst du mir dabei helfen?
VG, Kisska
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Bilder aus URLs in Excel anzeigen


Schritt-für-Schritt-Anleitung

Um Bilder aus URLs in Excel anzuzeigen, kannst Du die folgenden Schritte befolgen:

  1. Öffne Excel und erstelle eine neue Arbeitsmappe oder verwende eine bestehende.

  2. Füge die URLs der Bilder in eine Spalte ein (z.B. Spalte C).

  3. Erstelle eine benutzerdefinierte Funktion in VBA, um die Bilder anzuzeigen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
    • Füge den folgenden Code ein:
    Public Function InsertPicFromURL(URL As String) As String
    On Error GoTo Fehler
    If URL <> "" Then
       With ActiveSheet.Pictures.Insert(URL)
           .Top = Application.Caller.Top + 1
           .Left = Application.Caller.Left + 1
           .Height = Application.Caller.Height - 2
       End With
    End If
    Fehler:
    InsertPicFromURL = ""
    End Function
  4. Verwende die Funktion in den Zellen der Spalte D, um die Bilder anzuzeigen. Gib in Zelle D2 Folgendes ein:

    =InsertPicFromURL(C2)
  5. Ziehe die Zelle D2 nach unten, um die Funktion für die restlichen Zellen in Spalte D anzuwenden.

  6. Aktualisiere die Bilder bei Bedarf, indem Du die entsprechenden Zellen bearbeitest oder ein Makro zur Aktualisierung verwendest.


Häufige Fehler und Lösungen

  • Fehler: "Das Bild kann nicht eingefügt werden."

    • Stelle sicher, dass die URL korrekt ist und das Bild öffentlich zugänglich ist.
  • Bilder werden nicht aktualisiert.

    • Überprüfe, ob die Zellformeln korrekt sind und die Funktion InsertPicFromURL richtig aufgerufen wird.
  • Leere Zellen oder weiße Kästchen erscheinen.

    • Füge eine Fehlerbehandlung in die Funktion ein, um solche Fälle zu verhindern.

Alternative Methoden

Wenn Du eine andere Methode ausprobieren möchtest, kannst Du auch den Excel-Hyperlink verwenden:

  1. Füge die URLs als Hyperlinks in die Zellen ein.
  2. Verwende die Funktion =HYPERLINK(C2, "Bild anzeigen"), um einen klickbaren Link zu erstellen.
  3. Klicke auf den Link, um das Bild im Webbrowser zu öffnen.

Diese Methode zeigt zwar nicht das Bild direkt in Excel an, ermöglicht aber einen schnellen Zugriff auf die URL.


Praktische Beispiele

  1. Einfügen von Bildern aus einer Liste:

    • Angenommen, Du hast in Spalte C die folgenden URLs:
      • http://example.com/image1.jpg
      • http://example.com/image2.jpg
    • Verwende die Formel in Spalte D für jede URL, um die Bilder anzuzeigen.
  2. Verknüpfung mit Artikelnummern:

    • Erstelle eine Tabelle mit Artikelnummern in Spalte A, Buchstaben in Spalte B und kombinierten URLs in Spalte C.
    • Verwende die oben beschriebene Methode, um die entsprechenden Bilder in Spalte D anzuzeigen.

Tipps für Profis

  • Performance verbessern:

    • Um die Leistung zu steigern, lösche alte Bilder in der Spalte, bevor Du neue hinzufügst. Verwende ein Makro, um diese Aufgabe zu automatisieren.
  • Bilder nur bei Bedarf aktualisieren:

    • Implementiere eine Logik, die nur die geänderten Links aktualisiert, anstatt alle Bilder neu zu laden.
  • Fehlerprotokollierung:

    • Integriere eine Protokollierung in Dein Makro, um Fehler bei fehlgeschlagenen Bild-Einfügungen zu dokumentieren.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Bilder immer aktuell sind?
Verwende ein Makro, das die Bilder in der Spalte D regelmäßig aktualisiert, oder füge eine Bedingung hinzu, die nur die geänderten Links überprüft.

2. Kann ich Bilder aus einer Datenbank oder einem internen Server anzeigen?
Ja, solange Du die korrekte URL zum Bild hast, kannst Du die gleiche Methode verwenden, um die Bilder anzuzeigen.

3. Funktioniert dies in allen Excel-Versionen?
Die beschriebenen Methoden sollten in Excel 2010 und höher funktionieren. Achte darauf, dass VBA aktiviert ist.

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