Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1720to1724
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

VBA Bild in Zellbereich einfügen

VBA Bild in Zellbereich einfügen
08.11.2019 23:14:36
Peer
Hallo.
Ich habe ein Makro, das in einen Bereich des ActiveSheet ein Bild einfügen soll. Wenn ich ein anderes Bild laden möchte, soll es das vorhandene löschen und das neu ausgewählte einfügen. Bis jetzt überliegt das eine Bild dem anderen. Es sollen nur png-Dateien eingefügt werden, weil ich diesen Zellbereich für die Unterschrift benötige und daher die Transparenz benötige.
Mein Code sieht bis jetzt so aus...
Sub BildLaden()
Dim sPicture As String, pic As Picture
sPicture = Application.GetOpenFilename _
("Grafik laden (*.png), *.png", , "Wähle deine erstelle Unterschrift aus !")
ActiveSheet.Unprotect Password:=""
On Error GoTo Fehler:
Set pic = ActiveSheet.Pictures.Insert(sPicture)
If sPicture = "False" Then ActiveSheet.Shapes(pic).Delete  'Exit Sub
With pic
.ShapeRange.LockAspectRatio = msoFalse
.Height = Range("D45:G49").Height
.Width = Range("D45:G49").Width
.Top = Range("D45:G49").Top
.Left = Range("D45:G49").Left
.Placement = xlMoveAndSize
End With
ActiveSheet.Protect Password:=""
Set pic = Nothing
Fehler:
Exit Sub
End Sub
Sorry, wenn es nicht profihaft ausschaut.
Was muss ich ändern oder hinzufügen?
Vielen Dank, wenn jemand einen oder auch mehrer Tipps hat.
LG
Peer

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Bild in Zellbereich einfügen
09.11.2019 07:13:59
Potter
Hallo Peer,
vielleicht hilft es, wenn Du Deinem Bild einen Namen gibst, über diesen findest Du das Bild und kannst es beim nächsten Durchlauf löschen.
Initial kannst Du über (Office 2010)
Start .... Suchen und Auswählen ... Auswahlbereich…
sehen wie Deine Shapes heißen und sie umbenennen (wenn das Blatt nicht geschützt ist).
Nenne das existierende Shape in "Bild" um.
In Deinem Code:
Im Anschluß an Deine Fehleranweisung setze
ActiveSheet.Shapes("Bild").Delete
In Deiner With …End With –Anweisung ergänze
.Name = "Bild"

Grüße,
Potter
Anzeige
AW: VBA Bild in Zellbereich einfügen
09.11.2019 16:17:47
Peer
Hallo Potter.
Vielen Dank für deine schnelle Hilfe. Karin's Beispiel habe ich als erstes genommen und bin erstmal dabei geblieben.
LG
Peer
AW: VBA Bild in Zellbereich einfügen
09.11.2019 08:38:51
Beverly
Hi Peer,
wenn du nur 1 Bild im Tabellenblatt hast, dann kannst du immer das zuletzt eingefügte Bild löschen:
Sub BildLaden()
Dim sPicture As String, pic As Picture
sPicture = Application.GetOpenFilename _
("Grafik laden (*.png), *.png", , "Wähle deine erstelle Unterschrift aus !")
If sPicture  "False" And sPicture  "Falsch" Then
ActiveSheet.Unprotect Password:=""
' wenn 1 Bild enthalten ist dann dieses löschen
If ActiveSheet.Pictures.Count > 0 Then ActiveSheet.Pictures(ActiveSheet.Pictures.Count). _
Delete
Set pic = ActiveSheet.Pictures.Insert(sPicture)
With pic
.ShapeRange.LockAspectRatio = msoFalse
.Height = Range("D45:G49").Height
.Width = Range("D45:G49").Width
.Top = Range("D45:G49").Top
.Left = Range("D45:G49").Left
.Placement = xlMoveAndSize
End With
ActiveSheet.Protect Password:=""
Set pic = Nothing
End If
End Sub

Oder - falls du anschließend noch weitere Bilder einfügst - kannst du prüfen, ob sich bereits eine Bild im Blatt befindet, dessen Zelladresse der linken oberen Ecke mit D45 übereinstimmt. Dazu anstelle der Zeile If ActiveSheet.Picures.Count .... diese Zeilen:
        For Each pic In ActiveSheet.Pictures
If pic.TopLeftCell.Address = "$D$45" Then
pic.Delete
Exit For
End If
Next pic


Anzeige
AW: VBA Bild in Zellbereich einfügen
09.11.2019 10:48:16
Peer
Hallo Karin.
Vielen Dank für deinen UNterstützung.
Erstes Beipspiel klappt wunderbar.
Zweites kommt mit Meldung "Laufzeitfehler 13: Typen unverträglich" und bleibt bei "Next pic" hängen.
Sub BildLaden()
Dim sPicture As String, pic As Picture
sPicture = Application.GetOpenFilename _
("Grafik laden (*.png), *.png", , "Wähle deine erstelle Unterschrift aus !")
If sPicture  "False" And sPicture  "Falsch" Then
ActiveSheet.Unprotect Password:=""
' wenn 1 Bild enthalten ist, dann dieses löschen
'If ActiveSheet.Pictures.Count > 0 Then ActiveSheet.Pictures(ActiveSheet.Pictures.Count). _
Delete
'prüfen, ob sich bereits eine Bild im Blatt befindet, dessen Zelladresse der linken oberen  _
Ecke mit D45 übereinstimmt,
'falls noch weiter Bilder eingefüget werden sollen
For Each pic In ActiveSheet.Pictures
If pic.TopLeftCell.Address = "$E$45" Then
pic.Delete
Exit For
End If
Next pic
Set pic = ActiveSheet.Pictures.Insert(sPicture)
With pic
.ShapeRange.LockAspectRatio = msoFalse
.Height = Range("E45:F49").Height
.Width = Range("E45:F49").Width
.Top = Range("E45:F49").Top
.Left = Range("E45:F49").Left
.Placement = xlMoveAndSize
End With
ActiveSheet.Protect Password:=""
Set pic = Nothing
End If
End Sub
LG
Peer
Anzeige
AW: VBA Bild in Zellbereich einfügen
09.11.2019 11:01:26
Beverly
Hi Peer,
das kann ich leider nicht nachvollziehen - bei mir kommt kein Fehler.
Aber du kannst mal versuchen, anstelle Pictures Shape zu verwenden - definiere eine Variable als Shape und laufe in der Schleife über alle Shapes:
    Dim shaShape As Shape
For Each shaShape In ActiveSheet.Shapes
If shaShape.TopLeftCell.Address = "$E$45" Then
shaShape.Delete
Exit For
End If
Next shaShape


AW: VBA Bild in Zellbereich einfügen
09.11.2019 14:10:46
Peer
Hallo Karin.
Der Fehler bleibt.
Ich sende mal die Datei.
https://www.herber.de/bbs/user/133040.xlsm
LG
Peer
Anzeige
AW: VBA Bild in Zellbereich einfügen
09.11.2019 14:39:22
Beverly
Hi Peer,
auch in deiner hochgeladenen Mappe erhalte ich keinen Fehler. Ich benutze ebenfalls Excel2016.


AW: VBA Bild in Zellbereich einfügen
09.11.2019 14:41:38
Peer
Nach Neustart von Excel ist Fehler nicht mehr aufgetaucht.
Vielleicht lag es am Blattschutz?
Denn die Datei ist beim Start mit dem Blattschutz versehen. Beim Codieren war er aber deaktiviert worden. Und beim Durchlauf des Makros soll er den Blattschutz entfernen (was er ja schon war) und kam dadurch durcheinander?
Keine Ahnung!
Jedenfalls geht es jetzt. Danke Karin.
Noch eine spezielle Frage hätte ich.
Ich möchte dem User die Möglichkeit bieten, nicht durch einen Button das Makro zu starten, sondern bei Klicken oder Doppelklicken in dem Bereich E45:F49 durch das Makro die Unterschrift einzufügen.
LG
Peer
Anzeige
AW: VBA Bild in Zellbereich einfügen
09.11.2019 15:04:11
Beverly
Hi Peer,
am Blattschutz kann es nicht gelegen haben, denn der wird bei Makroausführung aufgehoben.
Du hast bereits ein DoppelClick-Ereignis im Tabellenbatt, welches für das gesamte Blatt gilt, um das UF zu starten - soll dieses dann nicht gestartet werden wenn im Bereich E45:F49 doppelgeklickt wird sondern stattdessen das Bild eingefügt werden? Oder wie stellst du dir das vor?


AW: VBA Bild in Zellbereich einfügen
09.11.2019 15:25:28
Peerli
Das ist richtig, Karin.
Die UF soll nur in den Zeilen 12 bis 42 geöffnet werden. Leider bin aktuell noch nicht dazu gekommen, das hinzubekommen.
Vielleicht macht man es so, das, wenn keine Unterschrift in dem Bereich ist,das man einen Link oder Button "Unterschrift" einfügen lässt, ansonsten das Bild.
Anzeige
AW: VBA Bild in Zellbereich einfügen
09.11.2019 20:01:38
Beverly
Dann verschiebe doch einfach den Button "Unterschrift" in den Bereich wo die Unterschrift dann eingefügt werden soll - das eingefügte Bild wird dann auf den Button gelegt, sodass er nicht mehr sichtbar ist.


AW: VBA Bild in Zellbereich einfügen
09.11.2019 21:00:39
Peer
Aber wenn dann das Bild einmal drin, kann man den Button nicht mehr drücken und das Makro ausführen. Das ist aber nötig, wenn man das Bild ändern möchte.
AW: VBA Bild in Zellbereich einfügen
09.11.2019 23:48:44
Beverly
Wenn das Bild drin ist, kannst du aber auch keinen Doppelklick mehr auf die darunterliegenden Zellen machen.


Anzeige
AW: VBA Bild in Zellbereich einfügen
10.11.2019 08:33:11
Peerli
Das stimmt auch wieder, Karin.
Da werde ich wohl über ein UF eine Lösung finden müssen.
Lieben Dank
AW: VBA Bild in Zellbereich einfügen
09.11.2019 14:03:33
Peer
Hallo Karin.
Vielen Dank für deinen UNterstützung.
Erstes Beipspiel klappt wunderbar.
Zweites kommt mit Meldung "Laufzeitfehler 13: Typen unverträglich" und bleibt bei "Next pic" hängen.
Sub BildLaden()
Dim sPicture As String, pic As Picture
sPicture = Application.GetOpenFilename _
("Grafik laden (*.png), *.png", , "Wähle deine erstelle Unterschrift aus !")
If sPicture  "False" And sPicture  "Falsch" Then
ActiveSheet.Unprotect Password:=""
' wenn 1 Bild enthalten ist, dann dieses löschen
'If ActiveSheet.Pictures.Count > 0 Then ActiveSheet.Pictures(ActiveSheet.Pictures.Count). _
Delete
'prüfen, ob sich bereits eine Bild im Blatt befindet, dessen Zelladresse der linken oberen  _
Ecke mit D45 übereinstimmt,
'falls noch weiter Bilder eingefüget werden sollen
For Each pic In ActiveSheet.Pictures
If pic.TopLeftCell.Address = "$E$45" Then
pic.Delete
Exit For
End If
Next pic
Set pic = ActiveSheet.Pictures.Insert(sPicture)
With pic
.ShapeRange.LockAspectRatio = msoFalse
.Height = Range("E45:F49").Height
.Width = Range("E45:F49").Width
.Top = Range("E45:F49").Top
.Left = Range("E45:F49").Left
.Placement = xlMoveAndSize
End With
ActiveSheet.Protect Password:=""
Set pic = Nothing
End If
End Sub
LG
Peer
Anzeige

324 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige