Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bilder per VBA in Datei einfügen

Forumthread: Bilder per VBA in Datei einfügen

Bilder per VBA in Datei einfügen
29.04.2016 11:01:06
Bernd

Hallo zusammen,
ich hab mal eine Frage an die Profis, da ich aus den Googletreffern nicht schlau werde.
Ich lasse mir per Makro Bilder in eine Exceldatei einfügen, und die Datei wird anschliessend per Outlook versendet. das klappt schon soweit ganz gut; mein Problem ist jedoch, dass die unter Excel 2007 genutzte Funktion Pictures.Insert seit Excel 2010 wohl durch die geänderte Funktion Shapes.AddPicture(...) ersetzt wurde.
Wenn man Pictures.Insert nutzt, dann werden nur die Dateilinks in der Excel gespeichert und die Datei kommt beim Emailempfänger ohne das Bild an.
Leider habe ich von den Parametern dieser neuen Funktion Shapes.AddPicture keinen blassen Schimmer.
Zum Vergleich; unter Excel 2007 konnte ich Bilder noch mit folgendem Code einbinden, formatieren und versenden:
With ActiveSheet.Pictures.Insert(Me.TextBox7.Value
.Name = "Bild1"
End With
ws.Shapes("Bild1").Select
With Selection
.top = ws.Cells(18, 2).top
.left = ws.Cells(18, 2).left
.height = Range("B18:G41").height
.width = Range("B18:G41").width
End With

Ich habe versucht das auf die neue Form zu adaptieren; bekomm es aber nicht hin
With ActiveSheet.Shapes.AddPicture(Filename:=Me.TextBox7.Text, LinktoFile:=False, SaveWithDocument:=True)
.Name = "Bild1"
End With
ws.Shapes("Bild1").Select
With Selection
.top = ws.Cells(18, 2).top
.left = ws.Cells(18, 2).left
.height = Range("B18:G41").height
.width = Range("B18:G41").width
End With

Wenn ich den neuen Code ausführe bringt er mir immer den Laufzeitfehler 450:
"Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft"
Was muss ich in der neuen Funktion wie einstellen, damit das Bild wieder im Excel2007-Bildformat (also Position und Größe) übernommen wird?!?!
Wie wird das denn umgerechnet (Zellposition zu Pixel?!)?
Danke und Grüße

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Bilder per VBA in Datei einfügen
29.04.2016 11:50:33
Nepumuk
Hallo,
teste mal:
Dim objPicture As Shape
Set objPicture = ActiveSheet.Shapes.AddPicture(Filename:=Me.TextBox7.Text, LinktoFile:=msoFalse, _
    SaveWithDocument:=msoTrue, Left:=ws.Cells(18, 2).Left, Top:=ws.Cells(18, 2).Top, _
    Width:=Range("B18:G41").Width, Height:=Range("B18:G41").Height)
objPicture.Name = "Bild1"
Set objPicture = Nothing

Gruß
Nepumuk

Anzeige
AW: Bilder per VBA in Datei einfügen
02.05.2016 09:13:01
Bernd
Perfekt, funktioniert einwandfrei!
So einfach kann es gehen.
Danke Nepumuk!

;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Bilder per VBA in Excel einfügen


Schritt-für-Schritt-Anleitung

Um Bilder per VBA in eine Excel-Datei einzufügen, kannst Du die Shapes.AddPicture-Methode verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklicke auf VBAProject (DeineDatei.xlsm) -> Einfügen -> Modul.

  3. Füge den folgenden Code ein:

    Sub BildEinfügen()
       Dim objPicture As Shape
       Set objPicture = ActiveSheet.Shapes.AddPicture( _
           Filename:=Me.TextBox7.Text, _
           LinkToFile:=msoFalse, _
           SaveWithDocument:=msoTrue, _
           Left:=ActiveSheet.Cells(18, 2).Left, _
           Top:=ActiveSheet.Cells(18, 2).Top, _
           Width:=Range("B18:G41").Width, _
           Height:=Range("B18:G41").Height)
       objPicture.Name = "Bild1"
    End Sub
  4. Passe die Zellreferenzen an: Stelle sicher, dass die Zellreferenzen (z.B. Cells(18, 2)) und der Bereich (Range("B18:G41")) zu Deinem Arbeitsblatt passen.

  5. Führe das Makro aus: Drücke F5 oder klicke auf Ausführen, um das Makro zu testen.


Häufige Fehler und Lösungen

  • Laufzeitfehler 450: Dieser Fehler tritt auf, wenn nicht die richtige Anzahl an Argumenten an die Methode Shapes.AddPicture übergeben wird. Stelle sicher, dass alle erforderlichen Parameter korrekt angegeben sind.

  • Bild wird nicht angezeigt: Achte darauf, dass der Pfad zur Bilddatei korrekt ist und die Datei existiert. Überprüfe auch, ob der Pfad in TextBox7 richtig eingegeben wurde.


Alternative Methoden

Eine weitere Methode, um Bilder in Excel einzufügen, ist die Verwendung der Pictures.Insert-Methode. Diese Methode wird jedoch in neueren Excel-Versionen nicht mehr empfohlen, da sie nur Links zu den Bildern speichert. Die Verwendung von Shapes.AddPicture ist die zuverlässigere Option.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie Du ein Bild aus einem bestimmten Verzeichnis in eine Excel-Datei einfügen kannst:

Sub BeispielBildEinfügen()
    Dim pfad As String
    pfad = "C:\Bilder\meinBild.jpg" ' Pfad zum Bild
    ActiveSheet.Shapes.AddPicture(Filename:=pfad, _
        LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
        Left:=50, Top:=50, Width:=100, Height:=100).Name = "MeinBild"
End Sub

In diesem Beispiel wird ein Bild an den Koordinaten (50, 50) eingefügt und auf 100x100 Pixel skaliert.


Tipps für Profis

  • Automatisierung: Du kannst den Code in eine Schleife einfügen, um mehrere Bilder gleichzeitig einzufügen.
  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um das Programm robuster zu machen. Nutze On Error Resume Next, um unerwartete Fehler abzufangen.
  • Bildformate: Stelle sicher, dass die Bilder in einem unterstützten Format (z.B. JPG, PNG) vorliegen, um Probleme beim Einfügen zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich ein Bild in einer bestimmten Zelle platzieren? Du kannst die Top und Left Eigenschaften der Shapes.AddPicture-Methode anpassen, um das Bild exakt in einer Zelle zu positionieren.

2. Was ist der Unterschied zwischen Shapes.AddPicture und Pictures.Insert? Shapes.AddPicture fügt das Bild direkt in das Dokument ein, während Pictures.Insert nur einen Link zum Bild speichert, was zu Problemen beim Versenden der Datei führen kann.

3. Funktioniert dieser Code in Excel 2007? Ja, der Code funktioniert auch in Excel 2007, jedoch solltest Du die Shapes.AddPicture-Methode verwenden, um Bilder korrekt einzufügen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige