Excel Über Macro Bilder ohne Link einbetten?

3 Antworten

So wie ich das sehe, hast du die Bilder auf dem Rechner gespeichert und rufst di darüber ab.

Wenn du nun die Datei nun versenden willst, feht der Bezug zu den Bildern.

Anders ist es, wenn du die Bilder auf einer Cloud abspeicherst und alle anderen darauf zu greifen können.

tobiholic 
Fragesteller
 10.02.2021, 12:14

Das habe ich auch schon überlegt, mir ist es aber lieber, wenn die Bilder sich in der Exceldatei befinden. Gibt es dazu eine Lösung?

0

So was ähliches habe ich erst neulich gebraucht:

Sub LogoEinfügen()
    On Error Resume Next
    Dim fd
    Dim fileName
        
        Set fd = Application.FileDialog(msoFileDialogFilePicker)
 
        With fd
            .Filters.Clear
            .Filters.Add "Alle Dateien", "*.*?", 1
            .Title = "Wählen Sie eine Bilddatei"
            .AllowMultiSelect = False
            '.InitialFileName = ""
            If .Show = True Then
                fileName = .SelectedItems(1)
            End If
        End With
    
    With ActiveSheet.Pictures.Insert(fileName)
        .Top = 0
        .Left = 0
        .Height = 90#
        .Width = 180#
    End With
    
End Sub
Woher ich das weiß:eigene Erfahrung

Dateien die "in" Excel selbst vorhanden sein sollen sind als "OLE" Objekt hinzuzufügen.
Versuch dies mal:
  ActiveSheet.OLEObjects.Add(Filename:="C:\test.jpg", Link:=False, DisplayAsIcon:=False).Select 'ggf DisplayAsIcon =True
Per VBA können diese internen OLE Objekte auch wieder auf einem Zielrechner lokal extrahiert werden.

tobiholic 
Fragesteller
 10.02.2021, 13:10

Danke! Meine IT Kentnisse reichen leider nicht aus, um das in meinen aktuellen Code zu übertragen. Wenn ich statt ActiveSheet. ActiveSheet.OLEO eintrage, erhalte ich leider eine Fehlermeldung..

0
IchMalWiederXY  10.02.2021, 13:13
@tobiholic

Dieser Code muss in einem "Modul" (oder auch in der Code Sektion zu einem Worksheet) stehen. (NICHT in einer Excel Zelle)
VBA Editor Öffnen: ALT+F11 drücken.
Dort an der gewünschten Stelle einfügen. Zugegeben, ein paar weitere VBA Kennnisse sind nötig.

0
tobiholic 
Fragesteller
 10.02.2021, 13:18
@IchMalWiederXY

ja ganz so schlimm ist es auch nicht :D Soweit bin ich - mir ist nur nicht klar, wie ich den in meinen aktuellen Code einbinde..

Etwa so?

Sub InsertPics()

  Dim Rw&, PFAD$, Datei$, Bild As Shape

  PFAD = "C:\test\"
  With ActiveSheet.OLEObjects.Add(fileName:="C:\test.jpg", Link:=False, DisplayAsIcon:=False).Select
    For Rw = 32 To 47
      Datei = .Range("G" & Rw) & ".jpg"
      If Dir(PFAD & Datei) <> vbNullString Then
        .Pictures.Insert (PFAD & Datei)
        Set Bild = .Shapes(.Shapes.Count)
        Bild.LockAspectRatio = msoFalse
        Bild.Left = .Range("A" & Rw).Left
        Bild.Top = .Range("A" & Rw).Top
        Bild.Width = .Range("A" & Rw).Width
        Bild.Height = .Range("A" & Rw).Height
      End If
    Next
  End With
End Sub
0
IchMalWiederXY  10.02.2021, 13:28
@tobiholic

Nein. Das OLE Object ist "NICHT" in einer Zelle. Damit kann es auf diese Weise nicht angezeigt werden. Es BEFINDET sich NUR in Excel.
Wie man nun in einer PictureBox (ActiveX Element) in Excel das OLE Object zur Anzeige bringt habe ich auch noch nie gemacht. Sollte aber möglich sein.
Die muss die Position des OLE Objectes IN Excel nutzen und NICHT mehr den Pfad zu deinem Rechner. GOOGLE mal
"VBA Display OLE Object in PictureBox"

1
tobiholic 
Fragesteller
 10.02.2021, 13:29
@IchMalWiederXY

alles klar - vielen Dank für deine Geduld! Echt super und hilft mir gerade extrem weiter :)

1