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

Forumthread: Per Makro Bilder aus Ordner in Excel einfügen

Per Makro Bilder aus Ordner in Excel einfügen
21.03.2018 10:18:06
gigi
Hallo zusammen,
ich habe ein Problem in Excel, welches ich auch durch diverse VBA-Makros aus dem Netz nicht lösen kann:
Ich möchte in der Spalte A eines Tabellenblattes über ein Makro ein JPG einfügen lassen, welches durch eine immer 9-stellige Artikelnummer (z.B. 00501-0165) in der Spalte D des selben Blattes ausgelesen wird. Die Bilder in dem Order sind alles JPGs und haben die selbe Bezeichnung wie die Artikelnummer in der Spalte D. Wenn ein Bild nicht gefunden wird, soll das Makro diese Zeile einfach überspringen. Die Bilder liegen unter folgendem Pfad ab: C:\Users\arno01\Desktop\Onboarding\PICTURES
Aktuell benutze ich folgenden Code, allerdings bekomme ich die Meldung: "Run-time error '1004': Unable to get the Insert property of the Pictures Class"
Sub InsertPics()
'Loop through Rows 1 - 4
For rw = 1 To 4
'Insert jpg into based on string in Column D
'(Enter the correct path below)
ActiveSheet.Pictures.Insert _
("C:\Users\arno01\Desktop\Onboarding\PICTURES" _
& Range("D" & rw) & ".jpg").Select
'Position and size image
With ActiveSheet.Shapes(Selection.Name)
.Left = ActiveSheet.Cells(rw, 1).Left
.Top = ActiveSheet.Cells(rw, 1).Top
.ScaleWidth 0.2, msoFalse, msoScaleFromTopLeft
.ScaleHeight 0.2, msoFalse, msoScaleFromTopLeft
End With
Next
End Sub


Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per Makro Bilder aus Ordner in Excel einfügen
21.03.2018 10:27:13
Michael
Hallo!
Bevor ich Dir neuen Code schreibe: Im von Dir geposteten Code fehlt beim Hauptpfad nur ein schließender "\". Also...
ActiveSheet.Pictures.Insert _
("C:\Users\arno01\Desktop\Onboarding\PICTURES" & "\"_
& Range("D" & rw) & ".jpg").Select
LG
Michael
Anzeige
AW: Per Makro Bilder aus Ordner in Excel einfügen
21.03.2018 11:52:28
gigi
Hey Michael,
Danke schon mal für den super Tipp. Die Bilder werden jetzt eingefügt, allerdings habe ich noch folgende 2 Probleme. Wäre sehr dankbar wenn du hierfür auch einen Tipp hättest.
1) Falls ein Bild nicht gefunden wird zb. in Zeile 10, dann hört das Macro auf zu suchen, obwohl danach noch weitere Zeilen mit Productcodes folgen. Ich würde es aber gerne so haben, dass es einfach die Zeile überspringt und die darauffolgenden Productcodes abgleicht.
2) Gibt es eine Möglichkeit das Macro so zu schreiben, dass es die Bilder passend zur Spaltenhöhe und Spaltenbreite einfügt ? (diese sind nämlich in Spalte A wo die Bilder eingefügt werden nach bestimmten Maßen fixiert) Die Bilder aus dem Ursprungsordner sind nämlich untershiedlich groß abgespeichtert und dementsprechend fügt das Macro die Bilder auch ein.
Hier nochmal der aktuelle Code:
Sub InsertPics()
'Loop through Rows 2 - 100
For rw = 2 To 100
'Insert jpg into based on string in Column C
'(Enter the correct path below)
ActiveSheet.Pictures.Insert _
("C:\Users\arno01\Desktop\Onboarding\PICTURES\" _
& Range("C" & rw) & ".jpg").Select
'Position and size image
With ActiveSheet.Shapes(Selection.Name)
.Left = ActiveSheet.Cells(rw, 1).Left
.Top = ActiveSheet.Cells(rw, 1).Top
.ScaleWidth 0.8, msoFalse, msoScaleFromTopLeft
.ScaleHeight 0.5, msoFalse, msoScaleFromTopLeft
End With
Next
End Sub

Lieben Dank nochmal für die Hilfe:).
Beste Grüße
Gigi
Anzeige
AW: Per Makro Bilder aus Ordner in Excel einfügen
21.03.2018 13:01:35
Michael
Versuch's mal so:
Sub InsertPics()
Dim Rw&, Pfad$, Datei$
Pfad = "C:\Users\arno01\Desktop\Onboarding\PICTURES\"
With ActiveSheet
For Rw = 2 To 100
Datei = .Range("C" & Rw) & ".jpg"
If Dir(Pfad & Datei)  vbNullString Then
.Pictures.Insert (Pfad & Datei)
With .Shapes(.Shapes.Count)
.Left = .Range("A" & Rw).Left
.Top = .Range("A" & Rw).Top
.Width = .Range("A" & Rw).Width
.Height = .Range("A" & Rw).Height
End With
End If
Next
End With
End Sub
LG
Michael
Anzeige
AW: Per Makro Bilder aus Ordner in Excel einfügen
21.03.2018 14:11:49
gigi
Hey Micha,
der von dir vorgeschlagene Code fügt jetzt nur noch das erste Bild ein, sprich liest nur die erste Zeile und danach hört es auch. Zudem wird das Bild nicht in Spalte A eingefügt und auch nicht in der fixierten Höhe und Weite der Spalte.
Kann man da vllt. noch was machen?
Lieben Dank
Gigi
Anzeige
AW: Per Makro Bilder aus Ordner in Excel einfügen
21.03.2018 17:08:01
Michael
Hallo!
Kann man da vllt. noch was machen?
Ich schon :->... Im Ernst: .Shapes mag die With-Klammer nicht, daher besser so:
Sub InsertPics()
Dim Rw&, PFAD$, Datei$, Bild As Shape
PFAD = "U:\Test\"
With ActiveSheet
For Rw = 2 To 10
Datei = .Range("C" & 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
LG
Michael
Anzeige
AW: Per Makro Bilder aus Ordner in Excel einfügen
22.03.2018 09:17:14
gigi
Hallo Michael,
du bist der Wahnsinn. Funktioniert alles genau so wie ich es wollte :).
Riesen Dank mein Lieber.
Beste Grüße
Gigi
Gern, Danke für die Rückmeldung! owT
22.03.2018 09:55:45
Michael
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bilder aus Ordner in Excel einfügen mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Rechtsklicke im Projektfenster auf dein Projekt.
    • Wähle Einfügen > Modul.
  3. Kopiere und füge den folgenden VBA-Code ein:

    Sub InsertPics()
       Dim Rw&, Pfad$, Datei$, Bild As Shape
       Pfad = "C:\Users\arno01\Desktop\Onboarding\PICTURES\"
       With ActiveSheet
           For Rw = 2 To 100
               Datei = .Range("D" & Rw) & ".jpg"
               If Dir(Pfad & Datei) <> vbNullString Then
                   Set Bild = .Pictures.Insert(Pfad & Datei)
                   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
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus:

    • Drücke ALT + F8, wähle InsertPics und klicke auf Ausführen.

Mit dieser Schritt-für-Schritt-Anleitung kannst du Bilder aus einem Ordner in Excel einfügen und die Bilder in der entsprechenden Zelle anpassen.


Häufige Fehler und Lösungen

  • Fehler: "Run-time error '1004'"
    Lösung: Stelle sicher, dass der Pfad zu den Bildern korrekt ist und dass du den Schrägstrich (\) am Ende des Pfades hinzufügst.

  • Problem: Makro stoppt bei fehlendem Bild
    Lösung: Der bereitgestellte Code überspringt bereits fehlende Bilder. Stelle sicher, dass du die If Dir(...)-Bedingung korrekt implementiert hast.

  • Problem: Bilder werden nicht in der richtigen Zelle eingefügt
    Lösung: Überprüfe die Zuweisung der Left-, Top-, Width- und Height-Eigenschaften im Code.


Alternative Methoden

  • Bilder automatisch einfügen: Du kannst auch Excel-Formeln verwenden, um Bilder basierend auf Dateipfaden einzufügen, indem du die Funktion =BILD() nutzt.
  • Verwende Power Query: Importiere Bilder über Power Query, wenn du eine größere Datenmenge hast.

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du verschiedene Dateitypen oder Anwendungsfälle in dein Makro integrieren kannst:

  • JPG- und PNG-Dateien einfügen:

    Datei = .Range("D" & Rw) & ".png"  ' für PNG-Dateien
  • Bilder aus Unterordnern einfügen:

    Pfad = "C:\Users\arno01\Desktop\Onboarding\PICTURES\Unterordner\"

Tipps für Profis

  • Optimierung der Bildgrößen: Nutze .LockAspectRatio = msoFalse, um die Bilder an die Zellen anzupassen.
  • Fehlerprotokollierung: Füge ein Fehlerprotokoll hinzu, um zu verfolgen, welche Bilder nicht gefunden wurden, indem du eine Nachricht in eine Protokolldatei schreibst.
  • Eingabemöglichkeiten für den Benutzer: Erstelle ein Eingabefeld, um den Bildpfad dynamisch zu ändern.

FAQ: Häufige Fragen

1. Was mache ich, wenn das Bild nicht angezeigt wird?
Überprüfe den Dateipfad und stelle sicher, dass die Dateinamen in der Excel-Datei genau mit den Bildnamen übereinstimmen.

2. Kann ich auch andere Bildformate einfügen?
Ja, du kannst jede Art von Bildformat einfügen, solange du den entsprechenden Dateinamen und die Erweiterung im Code anpasst.

3. Wie kann ich Bilder in Zellen einbetten?
Nutze die oben genannten Techniken zur Größenanpassung, um die Bilder in die Zellen einzupassen.

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