peterha
Goto Top

Excel mit VBA: Bild aus dem Internet einfügen

Hallo zusammen,

ich habe gestern etliche vba-Schnipsel ausprobiert, aber keines hat so richtig hingehauen...

Ich möchte: Ein Bild aus dem Internet in Excel einfügen. Automatisiert. bei jedem mal, wenn die Mappe geöffnet wird, soll das aktuelle Bild aus dem Internet heruntergeladen werden und das alte ersetzt werden.

Dieser Code hier funktioniert nur mit lokalen Bildern. Was muss geändert werden? (Meine Test waren nicht erfolgreich.)
Wenn das Makro erneut läuft soll, soll das alte Bild ersetzt werden. (So wird immer wieder drüber gelegt.)

Immerhin funktioniert hier die Positionierung in der Mappe, was ich von den anderen, die ich getestet habe, nicht sagen kann...

Herzlichen Dank für eure Hilfe vorab.
Peter


Bisheriger Code:

Sub TestInsertPictureInRange()
    InsertPictureInRange "K:\mein-geheimer-pfad\bild.jpg", _  
        Range("B5:D10")  
End Sub

Sub InsertPictureInRange(PictureFileName As String, TargetCells As Range)
' inserts a picture and resizes it to fit the TargetCells range  
Dim p As Object, t As Double, l As Double, w As Double, h As Double
    If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub  
    If Dir(PictureFileName) = "" Then Exit Sub  
    ' import picture  
    Set p = ActiveSheet.Pictures.Insert(PictureFileName)
    ' determine positions  
    With TargetCells
        t = .Top
        l = .Left
        w = .Offset(0, .Columns.Count).Left - .Left
        h = .Offset(.Rows.Count, 0).Top - .Top
    End With
    ' position picture  
    With p
        .Top = 200
        .Left = 400
        .Width = 300
        .Height = 300
    End With
    Set p = Nothing
End Sub

Content-ID: 244963

Url: https://administrator.de/contentid/244963

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

colinardo
Lösung colinardo 29.07.2014, aktualisiert am 08.01.2015 um 18:12:11 Uhr
Goto Top
Hallo Peter,
der folgende Code holt das Internet-Bild bei jedem Öffnen des Workbooks und fügt es an der gewünschten Stelle des Sheets ein. Sollte das Bild schon vorhanden sein wird es vorher gelöscht.
Sub importImage()
    Dim ws As Worksheet, rngTarget As Range, shp As Shape, myImage As Shape, strBildUrl As String
    'Tabellenblatt festlegen  
    Set ws = Worksheets(1)
    ' URL des Bildes  
    strBildUrl = "http://www.domain.tld/images/categories/office_2013-120x65.jpg"  
    ' Ziel-Range für das Bild  
    Set rngTarget = ws.Range("B5:D10")  
    ' Suche das Bild und lösche es falls vorhanden  
    For Each shp In ws.Shapes
        If shp.AlternativeText = "myImageTag" Then  
            shp.Delete
            Exit For
        End If
    Next
    ' Bild hinzufügen  
    Set myImage = ws.Shapes.AddPicture(strBildUrl, msoTrue, msoTrue, rngTarget.Left, rngTarget.Top, rngTarget.Width, rngTarget.Height)
    ' Bild zur wiedererkennung 'taggen'  
    myImage.AlternativeText = "myImageTag"  
End Sub

' Prozedur ausführen wenn Arbeitsmappe geöffnet wird  
Private Sub Workbook_Open()
    importImage
End Sub
Um das Bild für den Löschvorgang wiederzuerkennen versehe ich es mit einem Tag in der Eigenschaft AlternativeText anhand dessen wir es identifizieren können.

Grüße Uwe
peterha
peterha 29.07.2014 um 14:53:10 Uhr
Goto Top
Abermals hast du mir sehr geholfen Uwe! Herzlichen Dank!
Grüße,
Peter