Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: ActiveSheet.Pictures.Insert - Laufzeitfehler

ActiveSheet.Pictures.Insert - Laufzeitfehler
Juppdietz
Hallo,
ich passe gerade ein Makro an, dass unter Excel 2003 problemlos lief und nun bei Excel 2010 einen Laufzeitfehler 1004 liefert.
Es geht um das Einfügen von Grafiken an einer bestimmten Stelle.
Der bisherige Quellcode:
Range("C51").Select
ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\ordner\datei.jpg").Select
Bei McGoogle fand ich, dass das & Probleme verursachen soll. Daraufhin habe ich den Code in
Dim sPic As String
pic = ThisWorkbook.Path & "\admin\klein.jpg"
ActiveSheet.Pictures.Insert(sPic).Select
angepasst. Ich habe mir auch einmal ein Makro aufgezeichnet und die Schritte manuell gemacht. Leider sieht der Quellcode genau so aus, wie der, den ich schrieb - bis auf den dynamischen Dateinamen, den ich in der Aufzeichnung natürlich nicht erzeugen kann.
Hat jemand eine Idee, die mir helfen könnte?
Vielen Dank für die Bemühungen bereits im Voraus!!!!!!!!!!!!!!!!!!!
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: ActiveSheet.Pictures.Insert - Laufzeitfehler
06.06.2012 10:11:20
Luschi
Hallo Juppdietz,
bei mir klappt Dein Makro in 'Excel 2010' ohne Vba-Fehler. Bild wird eingefügt und ist selektiert.
Das funktioniert mit unterschiedlichen Bild-Dateitypen (bmp, jpg, png).
Auch Leerzeichen in Pfad und Dateinamen sind kein Problem. Nur wenn die Bilddatei am angegebenen Ort nicht existiert, kommt ein Fehler 1004 - 'Die Insert-Eigenschaft des Picture-Objektes kann nicht zugeordnet werden."
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Paste:=xlPasteAllUsingSourceTheme
06.06.2012 10:55:24
Juppdietz
Hm. Die Datei war versteckt. Damit scheint es ein Problem zu geben.
Danke!!
Apropos Bilder:
Hast du zufällig auch dazu eine Idee?
Ich kopiere nach all dem obigen das Tabellenblatt via cells.select. Dann erstelle ich mit workbook.add eine xls und füge das Kopierte ein. Um die Formatierungen, Seitenabstände etc. zu behalten, muss ich in 2010 mittels Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme einfügen (in 2003 habe ich noch mittels ActiveSheet.Paste eingefügt - in 2010 sind dann die Zeilenhöhen etc. total verschoben). Dabei werden aber die Grafiken nicht mitgenommen.
Vielen Dank!!!
Anzeige
AW: Activesheet.Copy
06.06.2012 11:39:10
Sheldon
Hi Juppdietz,
probiers doch einfach mal mit Activesheet.Copy
Dann brauchst du nicht erst ein neues Workbook anzulegen und alles hineinzukopieren, sondern vom ActiveSheet wird eine Kopie in einer neuen Datei angelegt. Mit Grafiken.
Gruß
Sheldon
AW: Activesheet.Copy
06.06.2012 16:13:58
Juppdietz
Das war scheinbar zu einfach :-))
Danke!!!!!!!!!!!!!!
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

ActiveSheet.Pictures.Insert: Laufzeitfehler beheben


Schritt-für-Schritt-Anleitung

Um Bilder in Excel mittels VBA einzufügen, kannst Du den folgenden Code verwenden. Dieser Code sollte in Excel 2010 und späteren Versionen problemlos funktionieren, vorausgesetzt, die Bilddatei existiert am angegebenen Ort.

  1. Öffne den VBA-Editor (ALT + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Gib den folgenden Code ein:

    Sub BildEinfügen()
        Dim sPic As String
        sPic = ThisWorkbook.Path & "\ordner\datei.jpg"
        ActiveSheet.Pictures.Insert(sPic).Select
    End Sub
  4. Führe das Makro aus (Drücke F5 oder wähle "Ausführen").


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt häufig auf, wenn die angegebene Bilddatei nicht existiert oder der Pfad falsch ist. Überprüfe den Pfad und stelle sicher, dass die Datei nicht versteckt ist.
  • Bild wird nicht eingefügt: Wenn der Code ActiveSheet.Pictures.Insert nicht funktioniert, versuche es mit ActiveSheet.Pictures.Paste. Dies kann nützlich sein, wenn Du ein Bild aus der Zwischenablage einfügen möchtest.

Alternative Methoden

Falls die oben beschriebene Methode nicht funktioniert, gibt es alternative Ansätze:

  • Kopiere das gesamte Arbeitsblatt: Anstatt das Bild einzeln einzufügen, kannst Du das gesamte Arbeitsblatt kopieren. Verwende den Befehl:

    ActiveSheet.Copy

    Dies erstellt eine Kopie des Arbeitsblatts in einem neuen Workbook, einschließlich aller Grafiken.

  • Verwende Pictures.Paste: Wenn Du ein Bild kopiert hast und es in ein anderes Worksheet einfügen möchtest, kannst Du ActiveSheet.Pictures.Paste verwenden.


Praktische Beispiele

Hier sind einige Beispiele, wie Du Bilder effektiv in Excel einfügen kannst:

  1. Bilder dynamisch einfügen:

    Sub DynamischesBildEinfügen()
        Dim sPic As String
        sPic = ThisWorkbook.Path & "\bilder\bild" & Format(Now, "ddmmyyyy") & ".jpg"
        ActiveSheet.Pictures.Insert(sPic).Select
    End Sub
  2. Bilder aus der Zwischenablage einfügen:

    Sub BildEinfügenVonClipboard()
        ActiveSheet.Pictures.Paste.Select
    End Sub

Tipps für Profis

  • Überprüfe immer den Dateipfad, um sicherzustellen, dass er korrekt ist. Ein einfacher Tipp ist, den Pfad in ein Textfeld zu kopieren und zu testen.
  • Nutze On Error Resume Next, um Fehler abzufangen, und gib eine benutzerfreundliche Fehlermeldung aus.

    On Error Resume Next
    ActiveSheet.Pictures.Insert(sPic).Select
    If Err.Number <> 0 Then
        MsgBox "Bild konnte nicht eingefügt werden. Überprüfe den Pfad!", vbCritical
    End If
    On Error GoTo 0

FAQ: Häufige Fragen

1. Was mache ich, wenn der Pfad Leerzeichen enthält?
Das Einfügen von Leerzeichen im Pfad sollte kein Problem darstellen. Stelle sicher, dass der gesamte Pfad korrekt ist, und teste ihn gegebenenfalls in einem Windows Explorer.

2. Warum funktioniert der Code in Excel 2010, aber nicht in früheren Versionen?
Excel 2010 hat einige Änderungen in der VBA-Implementierung, insbesondere in Bezug auf die Grafikverwaltung. Der Code könnte in älteren Versionen wie Excel 2003 nicht korrekt funktionieren.

3. Wie kann ich sicherstellen, dass das Bild in einer bestimmten Zelle eingefügt wird?
Du kannst die Position des Bildes nach dem Einfügen anpassen, indem Du die Top- und Left-Eigenschaften des Picture-Objekts änderst.

With ActiveSheet.Pictures.Insert(sPic)
    .Top = Range("C51").Top
    .Left = Range("C51").Left
End With

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