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

Bild einfügen statt zu verknüpfen.

Bild einfügen statt zu verknüpfen.
11.11.2019 18:03:16
Peer
Hallo.
Ich habe mir ein Makro gebaut, welches ein Bild (Unterschrift) als png-File in meine Excel-Mappe einfügen soll. Dabei habe ich bis jetzt nur eine Verknüpfung erstellen können. Aber da ich die Datei auf verschiedenen Rechnern öffenen und bearbeiten muss, benötige das Bild "dauerhaft".
Mein Code ist bis jetzt so....
Sub BildLaden()
'mit Unterstützung von Beverly aus www.herber.de
Dim sPicture As String, pic As Picture, shaShape As Shape
'Öffnen Dialog zum Auswählen der Grafik
sPicture = Application.GetOpenFilename _
("Grafik laden (*.png), *.png", , "Wähle deine erstellte Unterschrift aus !")
'wenn keine Grafik vorhanden, dann...
If sPicture  "False" And sPicture  "Falsch" Then
ActiveSheet.Unprotect Password:=""
'Variante 1: wenn 1 Bild enthalten ist, dann dieses löschen
'If ActiveSheet.Pictures.Count > 0 Then ActiveSheet.Pictures(ActiveSheet.Pictures.Count). _
Delete
'Variante 2: 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 shaShape In ActiveSheet.Shapes
If shaShape.TopLeftCell.Address = "$E$45" Then
shaShape.Delete
Exit For
End If
Next shaShape
 Set pic = ActiveSheet.Shapes.AddPicture(sPicture, msoFalse, msoTrue, Cells(45, 5).Left,  _
Cells(49, 6), 50, 30)  'einfügen
'Set pic = ActiveSheet.Pictures.Insert(sPicture)                                             _
'verknüpfen
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
Es soll die Datei im Range("E45":F49") einfügen und nicht verknüpfen.
Der Debugger ist zufrieden, aber beim Aufruf wird mir zwar der Filedialog angeboten und ich kann die Datei auswählen, aber danach bekomme ich einen Laufzeitfehler 13 und er bleibt bei dem neu eingefügten Code
Set pic = ActiveSheet.Shapes.AddPicture(sPicture, msoFalse, msoTrue, Cells(45, 5).Left, Cells(49, 6), 50, 30)

hängen.
Was mache ich falsch?
LG
Peer

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bild einfügen statt zu verknüpfen.
11.11.2019 18:47:09
Nepumuk
Hallo Peer,
so besser?
Public Sub BildLaden()
    Dim sPicture As Variant, shaShape As Shape
    sPicture = Application.GetOpenFilename _
        ("Grafik laden (*.png), *.png", , "Wähle deine erstellte Unterschrift aus !")
    If sPicture <> False Then
        ActiveSheet.Unprotect
        For Each shaShape In ActiveSheet.Shapes
            If shaShape.TopLeftCell.Address = "$E$45" Then
                shaShape.Delete
                Exit For
            End If
        Next shaShape
        Set shaShape = ActiveSheet.Shapes.AddPicture(Filename:=sPicture, LinkToFile:=msoFalse, _
            SaveWithDocument:=msoTrue, Left:=Columns(5).Left, Top:=Rows(45).Top, _
            Width:=Columns("E:F").Width, Height:=Rows("45:49").Height)
        shaShape.Placement = xlMoveAndSize
        Set shaShape = Nothing
        ActiveSheet.Protect
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Bild einfügen statt zu verknüpfen.
11.11.2019 19:04:02
Peer
Hallo Nepumuk.
Definitiv!!! ;-)
Vielen Dank.
LG
Peer

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige