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:
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 244963
Url: https://administrator.de/contentid/244963
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
2 Kommentare
Neuester Kommentar
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.
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
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
Grüße Uwe