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

Forumthread: Bilder aus dem Internet automatisch in Excel anzei

Bilder aus dem Internet automatisch in Excel anzei
don
Hallo,
ich weiß nicht wieso mich das überfordert aber ich kann zwar meinen am 2. Februar verfassten Thread im Forum finden, jedoch nicht auf selbigen antworten. Deshalb nun ein neuer. Vielleicht kann man die ja hinterher zusammenlegen.
Ich meldete mich letztesmal mit dem Problem nicht nur einen sondern gleich mehrere Bilderlinks von Excel aus einer Url in ein Bild verwandeln zu lassen. Der damalige Thread endet damit dass ich erst das Layout fertigstellen wollte damit ich dann konkreter das Problem formulieren kann.
Hier ein Auszug des Ergebnisses:
Bildlink: http://666kb.com/i/c154hq6pepuu2tpu6.gif
In ED1-ED3 liegen die von Excel generierten Bild-Urls die die Pfade zu den drei in CP1,CP22 und CP39 angeben. Wie das letztenendes zu stande kommt ist mir gleich. Es kann auch gerne so sein dass sich die Bilderlinks in der selben Zelle befinden in der dann das Bild erscheint. Oder die Bildlinks in einem separaten Sheet liegen (was mir sogar am liebsten wäre). Die Bilder müssen darüberhinaus auch nicht aus dem Internet geladen werden können, sondern können auch Pfade auf meiner Festplatte sein, da all die Bilder auch dort liegen.
Ich hab hier auch einen kleinen Auszug aus meiner Tabelle zusammengebastelt der auf meine Problemstellung fokusiert ist.
Link: http://www.file-upload.net/download-4103955/excelbeispiel.xlsx.html
Die Original-Tabelle ist vermutlich zu groß und ohenhin zu umfangreich um sie an dieser Stelle hochzuladen, hier aber ein Screenshoit davon. Am Ende sollen die Bilder alle per Url-Umwandlung, nach obiger Problematik, dargestellt werden.
Link: http://nna.nn.ohost.de/excel2.png
Es wäre wirklich toll könnte mich jemand bei diesem Problem an der Hand nehmen. Ich schlage mich bereits seit Tagen intensiv und insgesamt seit Wochen damit herum. Das Problem taucht im Internet öfter auf (wenngleich sich die Problematik dort eigentlich immer nur auf ein einziges Bild beschränkt und nicht wie bei mir auf gleich mehrere), eine funktionierende Erklärung konnte ich bislang allerdings nicht finden auch wenn es ein recht simples Problem zu sein scheint da die Codes die von den hilfsbereiten Forums-Mitgliedern als Lösung angeboten werden sehr knapp sind. Vielleicht scheitert es auch nur an meinen nicht vorhandenen VBA Künsten.
hier auch noch Links mit vermeintlichen Lösungsansätzen die ich aber alle nicht zum Laufen gebracht habe:
http://www.mrexcel.com/forum/showthread.php?t=84733
http://stackoverflow.com/questions/6312710/how-to-get-images-to-appear-in-excel-given-image-url
und natürlich auch das hier auf dieser Seite bereitgestellte Beispiel.
Ich werde parallel zu diesem Thread natürlich noch weiter im Internet nach Lösungen suchen und mich, auch wenn ich etwas gefunden habe, erneut hier melden um meine eigene Frage zu beantworten, damit dieses "weltweite Problem" ein für alle mal gelöst werden kann :)
vielen Dank im voraus
Peter
Anzeige
AW: Bilder aus dem Internet automatisch in Excel anzei
10.02.2012 17:02:01
Nepumuk
Hallo,
versuch es mal damit:
Option Explicit

Private Declare Function URLDownloadToFile Lib "urlmon.dll" Alias "URLDownloadToFileA" ( _
    ByVal pCaller As Long, _
    ByVal szURL As String, _
    ByVal szFileName As String, _
    ByVal dwReserved As Long, _
    ByVal lpfnCB As Long) As Long

Private Const NO_ERROR = 0&
Private Const PICTURE_PATH = "C:\TempPicture.jpg"

Private Sub Insert_Picture(ByVal pvstrPicture As String, ByRef probjRange As Range)
    Dim InsertPicture As Shape
    If Download_Picture(pvstrPicture) Then
        With probjRange
            Set InsertPicture = .Parent.Shapes.AddPicture( _
                PICTURE_PATH, msoFalse, msoTrue, .Left, .Top, -1, -1)
        End With
        Call Kill(PICTURE_PATH)
    End If
End Sub

Private Function Download_Picture(pstrPictureURL As String) As Boolean
    Dim lngReturn As Long
    If Dir$(PICTURE_PATH) <> vbNullString Then Call Kill(PICTURE_PATH)
    lngReturn = URLDownloadToFile(0&, pstrPictureURL, PICTURE_PATH, 0&, 0&)
    If lngReturn = NO_ERROR Then
        Download_Picture = True
    Else
        MsgBox "Fehler beim Download"
    End If
End Function

Public Sub Test()
    Call Insert_Picture("http://www.b-five.net/simleague/anderes/bilder/players/adalardogrannas.jpg", Tabelle1.Cells(1, 1))
    Call Insert_Picture("http://www.b-five.net/simleague/anderes/bilder/players/dennisbliss.jpg", Tabelle1.Cells(12, 1))
    Call Insert_Picture("http://www.b-five.net/simleague/anderes/bilder/players/marccuban.jpg", Tabelle1.Cells(23, 1))
End Sub

Gruß
Nepumuk
Anzeige
AW: Bilder aus dem Internet automatisch in Excel anzei
13.02.2012 22:33:02
don
also erstmal vielen Dank für den prompten Hilfeversuch!
der von Nepomuk gepostete Code erzeugt bei mir allerdings einen Fehler: compile error: variable not defined
(nur um sicher zu gehen: ich hab den Reiter Sheet1 rechts-geklickt und unter View Code den Code hineinkopiert, danach das Macro über die Developer-Tools ausgewählt und auf Run geklickt).
Ich habe allerdings einen Code gefunden der eigentlich genau macht was ich mir erhofft hatte:
Sub x()
Dim oHL         As Hyperlink
With ActiveSheet
For Each oHL In .Hyperlinks
With .Pictures.Insert(oHL.Address)
.Left = oHL.Range.Left
.Top = oHL.Range.Top
End With
Next oHL
End With
End Sub
dieses wunderbare Ding wandelt URLs in der selben Zelle in der die URL zu finden ist in ein Bild um. Soweit so gut, allerdings tauchen neue Probleme auf: Ich bräuchte im Zuge dessen einen Code der die dort bislang liegenden Bilder vorher löscht bevor er die URL beim nächsten Öffnen des Worksheets neu umrechnet.
Und noch viel wichtiger: obiger Code wandelt die URL perfekt in ein Bild um, stellt diese allerdings in Originalgrösse dar, wodurch ich jedes einzelne Bild per Hand auf die richtige Grösse umwandeln müßte. Jezt ist die Frage ist es möglich dafür ein Macro aufzuzeichnen oder zu schreiben dass das Ändern der Grösse der Bilder für mich übernimmt? Wenn ich es mit einem aufgezeichneten Macro versuche muss ich jedes Bild erst extra anwählen bevor das Macro feherlfrei läuft.
Oder eine andere Variante wäre vielleicht "image controls" einzufügen die mit den Zellen in denen die URLs liegen verknüpft sind sodass die Bilder nicht in der Zelle mit der URL sondern im jeweiligen "image control" angezeigt werden?
Ich komme der Lösung näher, alleine schaffe ich es aber wohl nicht.
Anzeige
AW: Bilder aus dem Internet automatisch in Excel anzei
14.02.2012 00:21:30
Nepumuk
Hallo,
der Code hat zwar in der Klasse einer Tabelle nichts zu suchen, aber abgesehen davon ist da kein Fehler drin. Du hast nur vergessen den Tabellennamen anzupassen bzw. hast du in falsch angepasst,
Gruß
Nepumuk
AW: Bilder aus dem Internet automatisch in Excel anzei
16.02.2012 17:51:58
don
Also dein Code funktioniert nun natürlich perfekt nachdem ich ihn entsprechend konfiguriert habe, was aber auch nicht anders zu erwarten war.
Ein Problem ist mir allerdings geblieben, dass der Code die neu geladenen Bilder einfach über die bisherigen Bilder legt. Würde er diese auch noch vorher löschen wäre das Ding (fast*) perfekt.
* "fast" nur deshalb da ich eigentlich auch noch eine Formattierung der Bilder bräuchte aber die Bildergrösse kann ich auch einfach vorher enstprechend anpassen.
Anzeige
AW: Bilder aus dem Internet automatisch in Excel anzei
16.02.2012 18:12:19
don
... aber möchte ich den Code in einem anderen Worksheet mit anderen Sheet-Namen verwenden spuckt er mir wieder den Fehler "Variable not found" aus. Ist das Sheet auf den sich das Macro bezieht auch noch anderswo als in den 3 Zeilen unterhalb von "Public Sub Test()" definiert?
In der Testtabelle die ich in einem früheren Post mitgeschickt habe, funktioniert allerdings alles einwandfrei!
Anzeige
AW: Bilder aus dem Internet automatisch in Excel anzei
16.02.2012 18:29:24
Nepumuk
Hallo,
ich benutze grundsätzlich die Objektnamen der Tabellen. Das ist der Name welcher im Projektexplorer vor dem in Klammern stehenden Excelnamen der Tabellen steht. Und nein, der Tabellenname wird nur ein einziges mal benötigt.
Gruß
Nepumuk
AW: Bilder aus dem Internet automatisch in Excel anzei
16.02.2012 18:15:23
Nepumuk
Hallo,
ein Beispiel:
Public Sub Test()
    Dim objShape As Shape
    For Each objShape In Tabelle1.Shapes ' Tabelle anpassen !!!!!!!!!!!!!!!!!!!!!!
        Select Case objShape.TopLeftCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
            Case "A1", "A12", "A23" ' Adressen anpassen !!!!!!!!!!!!!!!!!!!!!
                objShape.Delete
        End Select
    Next
End Sub

Gruß
Nepumuk
Anzeige
2.2. ist schon im 'nur noch im Archiv'-Status! orT
10.02.2012 19:18:20
Luc:-?
Gruß Luc :-?
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Bilder aus dem Internet automatisch in Excel anzeigen


Schritt-für-Schritt-Anleitung

Um Bilder aus dem Internet in Excel automatisch anzuzeigen, kannst du VBA (Visual Basic for Applications) verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und aktiviere die Entwicklertools. Wenn der Reiter "Entwicklertools" nicht sichtbar ist, kannst du ihn in den Excel-Optionen aktivieren.

  2. Gehe zu "Visual Basic" über den Reiter "Entwicklertools".

  3. Füge ein neues Modul hinzu:

    • Klicke auf "Einfügen" und wähle "Modul".
  4. Kopiere den folgenden VBA-Code in das Modul:

    Option Explicit
    
    Private Declare Function URLDownloadToFile Lib "urlmon.dll" _
       Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
       ByVal szURL As String, ByVal szFileName As String, _
       ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
    
    Private Const NO_ERROR = 0
    Private Const PICTURE_PATH = "C:\TempPicture.jpg"
    
    Private Sub Insert_Picture(ByVal pvstrPicture As String, ByRef probjRange As Range)
       Dim InsertPicture As Shape
       If Download_Picture(pvstrPicture) Then
           With probjRange
               Set InsertPicture = .Parent.Shapes.AddPicture( _
                   PICTURE_PATH, msoFalse, msoTrue, .Left, .Top, -1, -1)
           End With
           Call Kill(PICTURE_PATH)
       End If
    End Sub
    
    Private Function Download_Picture(pstrPictureURL As String) As Boolean
       Dim lngReturn As Long
       If Dir$(PICTURE_PATH) <> vbNullString Then Call Kill(PICTURE_PATH)
       lngReturn = URLDownloadToFile(0&, pstrPictureURL, PICTURE_PATH, 0&, 0&)
       If lngReturn = NO_ERROR Then
           Download_Picture = True
       Else
           MsgBox "Fehler beim Download"
       End If
    End Function
    
    Public Sub Test()
       Call Insert_Picture("http://example.com/image1.jpg", Tabelle1.Cells(1, 1))
       Call Insert_Picture("http://example.com/image2.jpg", Tabelle1.Cells(2, 1))
    End Sub
  5. Passe die URLs und Zellen an, in denen die Bilder angezeigt werden sollen.

  6. Führe das Makro aus: Gehe zurück zu Excel, klicke auf "Makros" und wähle "Test" aus, um die Bilder automatisch in die entsprechenden Zellen einzufügen.


Häufige Fehler und Lösungen

  • Fehler: "Variable not defined"

    • Überprüfe, ob der Tabellennamen korrekt angegeben ist. Du musst den Namen der Tabelle in deinem Code entsprechend anpassen.
  • Bilder werden nicht angezeigt

    • Stelle sicher, dass die URLs korrekt sind und die Internetverbindung funktioniert. Teste die Links in einem Browser.
  • Bilder überlagern sich

    • Füge vor dem Einfügen neuer Bilder einen Code hinzu, der alle vorherigen Bilder in den Zellen löscht.

Alternative Methoden

Eine weitere Methode, um Bilder in Excel einzufügen, ist die Verwendung von Hyperlinks. Hier ist ein einfacher VBA-Code, der alle Hyperlinks in einem Arbeitsblatt in Bilder umwandelt:

Sub HyperlinksInBilderUmwandeln()
    Dim oHL As Hyperlink
    With ActiveSheet
        For Each oHL In .Hyperlinks
            With .Pictures.Insert(oHL.Address)
                .Left = oHL.Range.Left
                .Top = oHL.Range.Top
            End With
        Next oHL
    End With
End Sub

Dieser Code konvertiert die URLs in der Zelle in Bilder und zeigt sie an der gleichen Stelle an.


Praktische Beispiele

  1. Bilder aus einer Liste von URLs einfügen: Wenn du eine Liste von Bild-URLs in Spalte A hast, kannst du den oben genannten Code anpassen, um die Bilder in Spalte B anzuzeigen.

  2. Bilder von der Festplatte einfügen: Ändere die Bild-URLs zu lokalen Dateipfaden, um Bilder von deiner Festplatte in Excel anzuzeigen.


Tipps für Profis

  • Verwende benannte Bereiche: Wenn du häufig mit Bildern und URLs arbeitest, erstelle benannte Bereiche für deine Daten, um den Code übersichtlicher zu gestalten.

  • Automatisiere die Größenanpassung: Füge zusätzliche VBA-Logik hinzu, um die Größe der eingefügten Bilder automatisch anzupassen, basierend auf den Zellen, in denen sie eingefügt werden.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung im VBA-Code, um Benutzer über Probleme beim Download von Bildern zu informieren.


FAQ: Häufige Fragen

1. Wie kann ich Bilder aus dem Internet automatisch in Excel einfügen? Du kannst VBA verwenden, um Bild-URLs in Excel in Bilder umzuwandeln. Siehe die Schritt-für-Schritt-Anleitung.

2. Funktioniert das auch für lokale Bilder? Ja, du kannst lokale Pfade verwenden, um Bilder von deiner Festplatte anzuzeigen. Ändere einfach die URLs entsprechend.

3. Was tun, wenn Bilder nicht angezeigt werden? Überprüfe die URLs, die Internetverbindung und stelle sicher, dass die Bilder tatsächlich existieren.

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