[VBA] Bilder von URL in Excel-Tabelle anzeigen lassen

Crazy_down

Erfahrenes Mitglied
Hallo Zusammen,

ich habe eine Excel-Tabelle mit URLs, manche stehen einzeln da, manche sind mit einem Komma getrennt in der selben Spalte.
Nun möchte ich die Bilder der URLs in einer 2 Spalte anzeigen lassen.
3. Probleme bekomme ich dabei nicht in den Griff.

#1 Das Bild soll immer genau eine Spalte neben der URL stehen. Also die URL steht in "D1" und das Bild soll dann in "E1" angezeigt werden. usw.

#2 Ich möchte die Bilder skalieren, sie sollen nur 250 x 250 px dargestellt werden. Ist das möglich ?

#3 Wenn mehrere URLs in einer Spalte stehen und mit einem Komma getrennt sind, soll nur die erste URL berücksichtigt werden.

Kann mir dabei jemand weiterhelfen ?

Folgenden Code habe ich bisher verwendet:

Code:
Sub Bildvariabel()

Dim url

Sheets("URL_Export").Select
url = Range("D1:D60").Value

ActiveSheet.Pictures.Insert(url).Select


End Sub
 
Hier findest du ein Beispiel wo zumindest die meisten deiner Probleme gelöst werden!

NACHTRAG:

Wenn es mehrere URLs gibt, kannst du die erste vor dem Komma damit ermitteln:

Visual Basic:
t$ = Range("A1")
If (InStr(1, t$, ",")) Then
    Range("B1") = Mid(t$, 1, InStr(1, t$, ",") - 1)
End If

Im Beispiel stehen die URLs in Zelle "A1" und das Ergebnis wird in Zelle "B1" ausgegeben.
 
Zuletzt bearbeitet:
Vielen Dank für den Link und deinen Code um die URLs bei dem Komma zu trennen.

Ich habe noch ein kleines Problem.
Die Anzahle der Durchläufe habe ich über eine Inputbox gelöst, gebe ich dort z.B. "20" ein und es sind nur 5 BildURLs, legt er das Bild erst wieder bei der 20 ab statt da wo die URL gefunden wurde, allerdings verstehe ich gerade nicht so richtig warum.

Nachtrag:
Wenn keine URL vorhanden ist, sprint er solange bis wieder eine URL kommt oder die Anzahl erreicht ist und legt das Bild dort ab.
Kann ich nach jedem Einfügen diese URL clearen ?
Oder Wenn das Feld leer ist, gehe zum nächsten Feld ?

Visual Basic:
Sub Test()
    'Variable für URL deklarieren
    Dim url
   Dim S As Shape, P As Picture
   With Sheets("URL_Export")
    
     'Fehlerbehandlung aus falls Bild nicht da
     On Error Resume Next


'In welche Spalte sollen die Bilder ?
Columns("E:E").Select
'Spaltenigenschaften ändern
Selection.ColumnWidth = 35.29
'Wieviele URLs gibt es, dies gibt die Anzahl der Schleifendurchläufe an
j = InputBox("Wieviele URLs befinden sich in der Datei?")
    'Schleife für so viel Artikel wie angegeben wurden.
     For i = 2 To j
     'Zeileneigenschaften ändern
     Rows(i).Select
    Selection.RowHeight = 189
    'url einlesen, falls mehrere URLs in einer Zelle stehen, wird nur die erste genommen.
     t$ = Range("D" & i)
        If (InStr(1, t$, ",")) Then
            Range("D" & i) = Mid(t$, 1, InStr(1, t$, ",") - 1)
        End If
        'MsgBox "Kopiere nach: E" & i

        url = Range("D" & i).Value
        'MsgBox "URL:" & url
        'Die Zelle neben der URL auswählen
        Range("E" & i).Select
        'Bild einfügen
        Set P = .Pictures.Insert(url)
        'Namen vergeben
        P.Name = "Bild" & i
        'Shape-Object vom Bild holen
        Set S = .Shapes("Bild" & i)
     'Seitenverhältnis aus
     S.LockAspectRatio = msoFalse
     'Größe setzen
     S.Height = 250
     S.Width = 250
    
     'Positionieren
     With .Range("E" & i)
       S.Top = .Top
       S.Left = .Left
     End With
     
     Next i
 
Zuletzt bearbeitet:
Das liegt daran das du keine Abbruchbedingung hast die das Makro beendet wenn keine (gültige) URL mehr in Spalte D vorhanden ist.

Das Bild ist vom letzten Durchlauf noch vorhanden und da der Zähler i immer eine Zeile weiter runter geht (ohne dort ein neues Bild zu finden) wird einfach immer das letzte Bild neu positioniert und das bis i = 20

Abhilfe dafür schafft die hier neu eingegebene Zeile:

Visual Basic:
url = Range("D" & i).Value
'die folgende Zeile eingeben
If url = "" Then Exit Sub
 

Neue Beiträge

Zurück