Excel Über Macro Bilder ohne Link einbetten?
Hallo zusammen,
ich möchte für einen Kunden eine Produktübersicht mit Bildern erstellen. Die Bilder ziehe ich mir über folgenden Code:
Sub InsertPics()
Dim Rw&, PFAD$, Datei$, Bild As Shape
PFAD = "C:\test\"
With ActiveSheet
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
Welcher auf wunderbar funktioniert. Einziges Problem: Die Bilder werden nur verlinkt und nicht kopiert. Sobald ich die Datei versende, sind die Bilder nicht mehr sichtbar. Wie muss ich den Code verändern, um die Bilder gleich zu kopieren? Ist das möglich?
Danke für jede Antwort.
3 Antworten
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
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.
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.
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..
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.
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
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"
alles klar - vielen Dank für deine Geduld! Echt super und hilft mir gerade extrem weiter :)
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?