Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1684to1688
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bilder per Formel einbetten und löschen

Bilder per Formel einbetten und löschen
10.04.2019 11:35:31
Torsten
Hallo,
ich habe mir mit Hilfe des Forums in VBA eine Formel gebastelt, die in der Lage ist einen Hyperlink aufzurufen und ein Bild an einer bestimmten Stelle einzufügen:
Sub bildeinfuegen()

Function bildeinfuegenausURL(URL As String) As String
With ActiveSheet.Pictures.Insert(URL)
.Top = Application.Caller.Top + 1
.Left = Application.Caller.Left + 1
.ShapeRange.Height = 300
End With
InsertPicFromURL = ""
End Function
Das funktioniert auch relativ gut.
Ich möchte aber mehrere Bilder einfügen auf mehreren Tabellenblättern. Wenn ich den Link jetzt durch eine Information auf einem anderen Tabellenblatt gültig werden lasse, dann werden die Bilder nicht da eingefügt, wo die passende Formel Steht, sondern auf dem aktiven Blatt.
Frage 1: wie kann ich die Formel nur da ausführen, wo sie steht und damit mehrere Bilder auf mehreren Tabellenblättern einfügen?
Wenn ich jetzt irgendwelche Änderungen mache gibt es immer wieder Aktionen, die die Formel erneut ausführen, weshalb dann die Bilder mehrfach eingefügt werden. Teilweise dann, wie eben besprochen auf dem "falschen" Tabellenblatt.
Frage 2: Wie kann ich verhindern, dass die Formel ständig neu ausgeführt wird?
Wenn ich weiß, dass sich der Inhalt der gesuchten Bilder ändert möchte ich gezielt die Formel erneut ausführen, aber entweder für die noch nicht erfolgreich gesuchten Bilder, oder wahrscheinlich eher für alle, dann aber vorher alle schon eingefügten Bilder vorher löschen.
Frage 3: Wie kann ich vor dem Ausführen der Formel alle Bilder im Workbook löschen, damit sie nicht doppelt vorhanden sind?
Die Bilder werden mit dem Code alle in derselben Größe skaliert. Ich brauche aber unterschiedliche Größen.
Frage 4: Wie kann ich Bedingungen festlegen die eine unterschiedliche Skalierung bewirken?
Ich robbe mich langsam an das Thema VBA heran, glaube auch nicht hier nach Rocket-sience zu suchen, komme aber nicht weiter. Könnt Ihr mir helfen?
Viele Grüße
Torsten

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bilder per Formel einbetten und löschen
13.04.2019 08:59:30
fcs
Hallo Torsten,
ich bin jetzt etwas erstaunt, dass tatsächlich die Bilder über die Formel eingebunden werden - aber es funktioniert.
Deine Probleem/Wücnsche kann man über weitere Paramter lösen, die man an die Funktion übergibt.
Frage 1: wie kann ich die Formel nur da ausführen, wo sie steht und damit mehrere Bilder auf mehreren Tabellenblättern einfügen?
Gib als weiteren Parameter die Zelle an in der das Bild eingefügt werden soll. das kann auch die zelle mit der Formel sein.
Frage 2: Wie kann ich verhindern, dass die Formel ständig neu ausgeführt wird?
Ebenfalls über einen Paramter - hier dann eine Zelle in deiner Mappe z.B. mit Wert WAHR oder FALSCH.
Dieser Wert wird von der Funktion ausgewertet und die Funktion ohne Anleen des Bildes verlassen.
Frage 3: Wie kann ich vor dem Ausführen der Formel alle Bilder im Workbook löschen, damit sie nicht doppelt vorhanden sind?
Das löschen eines vorhandenen Bildes inder Einfügezelle kann man in die Funktion integrieren.
Frage 4: Wie kann ich Bedingungen festlegen die eine unterschiedliche Skalierung bewirken?
Die Größe kannst du über einen Parameter steuern oder die Bildgröße auch an die Höhe der Zelle anpassen.
LG
Franz
Vorschlag für angepasstes Makro:

Function bildeinfuegenausURL(URL As String, Zelle As Range, Optional varHeight, _
Optional bolNeu As Boolean = True) As String
Dim objShape As Shape
On Error GoTo Fehler
If bolNeu = False Then Exit Function
bildeinfuegenausURL = "Bild nicht gefunden"
With Zelle.Parent
For Each objShape In .Shapes
If Zelle.Address = objShape.TopLeftCell.Address Then
objShape.Delete
End If
Next
With .Pictures.Insert(URL)
.Top = Zelle.Top + 1
.Left = Zelle.Left + 1
If IsMissing(varHeight) Then
.ShapeRange.Height = Zelle.Height
Else
.ShapeRange.Height = varHeight
End If
End With
End With
bildeinfuegenausURL = ""
Fehler:
End Function

Anzeige

265 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige