853 Aufrufe
Gefragt in Tabellenkalkulation von
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


Vielen Dank für eure Hilfe.

Gigi

2 Antworten

0 Punkte
Beantwortet von flupo Profi (17.8k Punkte)
Ohne jetzt genauer geguckt zu haben: Dem Range()-Objekt fehlt noch
das ".Value" um auf den Wert der Zelle zuzugreifen.

Gruß Flupo
0 Punkte
Beantwortet von flupo Profi (17.8k Punkte)
Damit klappt es bei mir:
[code]On Error Resume Next
For rw = 1 To 4
    Range("A" & rw).Select
    Dateiname = "C:\Users\arno01\Desktop\Onboarding\PICTURES\" &
Range("D" & rw).Value & ".jpg"
    ActiveSheet.Pictures.Insert(Dateiname).Select
Next
[/code]
Erstmal nur das reine Einfügen.
Es fehlte bei dir auch noch ein Backslash nach PICTURES.
Ich arbeite bei sowas gern mit Variablen, weil man das dann leichter
debuggen kann (schrittweise ausführen und dabei gucken, wie sich die
Inhalte ändern).

Gruß Flupo
...