5k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo da draussen,

Ich suche schon den ganzen Morgen nach einer einfachen vielleicht mit makro basierende Lösung für mein Problem. Habe auch schon einiges gefunden, was aber alles irgendwie nicht so funktioniert wie es sollte...

Folgendes Problem:

Ich arbeite in einem kleinen Mercahndising shop und wir gehen von Zeit zu Zeit an Messen und Märkte. Dazu mache ich jeweils eine Sortimentsliste mit Bildern. Ich habe gehofft dass es eine schnelle und vielleicht nicht all zu schwere Lösung gibt um in der Spalte "A" pro Zeile jeweils das entsprechende Bild welches in einem Ordner abgespeichert ist und dessen Name ohne suffix (da ich verschiedene Formate habe) in der Zeile "B" aufgelistet ist, eingefügt wird. Diesen Vorgang natürlich bis zum letzten Eintrag auf der Liste.

Nun bin ich ja nicht so wahnsinnig versiert mit excel und den umfangreichen funktionen und habe mich in diesem Forum und noch diversen anderen Foren umgeschaut und dabei folgendes Makro gefunden:

Option Explicit

Sub Bilder_einfügen()
Dim Pfad As String, Wiederholungen As Long
On Error Resume Next
Pfad = "C:\"
For Wiederholungen = 2 To Range("A65536").End(xlUp).Row
Cells(Wiederholungen, 3).Activate
ActiveSheet.Pictures.Insert(Pfad & Cells(Wiederholungen, 1) & ".jpg").Select
Next
End Sub

Danke an dieser Stelle an Coros.

Dieses Makro funktioniert bei mir aber scheinbar nicht und ich weiss beim besten willen nicht an was das es liegt. habe den Pfad schon diverse Male überprüft mit Backslash abgeschlossen und auch ohne und natürlich auch die Bilder entsprechend im jpg format heruntergeladen. Ebenso hab ich mit den Angaben in den Zellen und Spalten rum Jongliert... alles ohne Erfolg.

Natürlich könnte ich jedes Bild einzeln in der Liste einfügen und so zum entsprechenden Ziel kommen, aber ich würde dies gerne so machen dass ich in Zukunft einfach die Angaben auf der Tabelle und die Bilder im Ordner Wechseln kann und dies dann auch alles automatisch geht wenn ich mal wieder ein anderes Sortiment zusammen stelle...

Kurz gesagt: Ich würde gerne Eine Liste machen wo ich in Spalte "A" das Bild einsetzte welche sich im angegebenen Pfad befindet und auf den Namen(ohne Suffix) in Zeile "B" hört... nett wäre auch wenn sich das Bild und die Zeile an ein "vorgegebenes" Format anpasst...

Ich hoffe dass ich das ganze nicht all zu kompliziert formuliert habe und danke euch bereits jetzt für Eure Hilfe... ich weiss Ihr seit alle sehr Versiert was diese ganze Excellsache anbelangt... im übrigen: ich benutze Excell 2010 auf der Arbeit.

21 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Torty,

versuch mal das folgende Makro:

Sub BilderSpalteA()

Dim Bild As Shape
Dim Zelle As Range
Dim loShapes As Long
ReDim arrShapes(0)

For Each Bild In ActiveSheet.Shapes

'Zelladresse des Bildes ermitteln (obere linke Ecke)
With Bild.TopLeftCell
Set Zelle = Cells(.Row, .Column)
End With
'Falls Bild in Spalte A, dann
If Zelle.Column = 1 Then
'Array redimensionieren
ReDim Preserve arrShapes(0 To loShapes)
'Name des Bildes in Array schreiben
arrShapes(loShapes) = Bild.Name
'Zähler erhöhen
loShapes = loShapes + 1
End If

Next

'gefundene Bilder markieren
If arrShapes(UBound(arrShapes())) <> "" Then
ActiveSheet.Shapes.Range(arrShapes()).Select
End If

End Sub


Jetzt sollten nur noch die Bilder in Spalte A markiert werden.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

Hat alles wie gewünscht geklappt. Ich danke dir, schon wieder, herzlich für deine Hilfe!

Grüsse

Torty
0 Punkte
Beantwortet von
Hallo M.O. und alle anderen,

Ich werde desswegen nicht ein neuer Threat anfangen wenn ich ja schon einen offen hab, und ich hoffe ihr könnt mir bei meinem "wunsch" nun auch hier helfen...

Ich versuche in meiner Excel tabelle jede Ausgewählte Zeile eine bestimmte Anzahl mal untereinander zu kopieren. Konkret sollte es ab Zeile 2 (A-H) jede Zeile 65x kopieren, zumindest jede Zeile in der etwas geschrieben steht. Gibt es auch da einen Makro-Zaubertrick um dies zu gewährleisten? Ich blicke bei diesen Codierungen einfach nicht durch... auch wenn dies vielleicht ganz Easy ist...

Danke für eure Hilfe, und ich hoffe Ich habe keinen Threat übersehen in dem dieses Problem - und die Lösung dazu schon steht, ansonsten bin ich auch um den Link froh... :-)

Grüessli

Torty
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Torty,

da deine neue Frage überhaupt nichts mit dem ursprünglichen Thread-Thema zu hat, solltest du deine Frage in einem neuem Thread stellen. Und erkläre bitte mal genauer, was du willst. Soll jetzt nur die ausgewählte Zeile bzw. die Spalten A bis H kopiert werden, oder alle vorhandenen Zeilen 65x untereinander (falls diese nicht leer sind). Und stehen in den Spalten A bis H nur Werte oder auch Formeln?

Gruß

M.O.
0 Punkte
Beantwortet von joe-ker Einsteiger_in (21 Punkte)

Hallo M.O.,

ich habe diesen Thread mit Begeisterung gelesen und würde dich auch gerne nochmal um deine Hilfe bitten.

Im Grunde ist dieses Makro genau das, was ich suche. Nur ist in meiner Liste in der Spalte A der komplette Dateipfad angegeben und es sollen auch die Bilder eingefügt werden, Größe geändert (mit gleichem Seitenverhältnis) und die Zeilen der Größe des Bildes automatisch angepasst werden. Starten sollte es ab Zeile 2 und komplett durchlaufen, wobei sich die Liste immer weiter vergrößern wird.

Meine Zeile sieht so aus:

\\DC01\Bilder\Gebrauchtlager\G2030.jpg G2030 SEW D-Motor DFT80N/4/2BMG/HR/Z 01.1120151301.0002.05 400 D/YY 0,55/0,88 1,81/2,05 1380/2700 IM B5

Wäre super, wenn du mir einen Code erstellen könntest.

MfG

Joachim

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Joachim,

in welche Spalte sollen die Bilder denn eingefügt werden und welche Größe sollen die Bilder haben?

Gruß

M.O.
0 Punkte
Beantwortet von joe-ker Einsteiger_in (21 Punkte)
Hi M.O.!

Danke für deine Antwort! Wenn es geht, wäre es schön, wenn das Bild gleich den Pfad ersetzt ... ansonsten gerne Spalte B, die ich dann noch vorher hinzufügen würde (die Liste wird vom Programm so exportiert).

Größe des Bildes: gerne 120px hoch, durch das Seitenverhältnis sollte die Länge dann ja automatisch kommen.

Riesen Dank für deine Mühe!
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Joachim,

der folgende Code gehört in ein Standardmodul deiner Arbeitsmappe (siehe dazu hier: http://www.excelbeispiele.de/Modul.htm):

Sub Bilder()

Dim lngZeile As Long
Dim strDatnam As String
Dim Bildbreite As Long
Dim Bildhöhe As Long
Dim meinBild

'Spalte A ab Zeile 2 durchlaufen
For lngZeile = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
 
 'Pfad mit Bildnamen stehen in Spalte A
 strDatnam = Cells(lngZeile, 1).Value
 'Prüfen, ob Bilddatei im Verzeichnis existiert
 If Dir(strDatnam) <> "" Then
     
  'Inhalt in Spalte A löschen
  Cells(lngZeile, 1).ClearContents
  'Höhe und Breite des Bildes ermitteln
  Set meinBild = LoadPicture(strDatnam)
  Bildbreite = meinBild.Width
  Bildhoehe = meinBild.Height

  'Bild in Zelle einfügen, 120pt hoch und Breite entsprechend skaliert
  ActiveSheet.Shapes.AddPicture strDatnam, msoFalse, msoTrue, Cells(lngZeile, 1).Left, Cells(lngZeile, 1).Top, 120 * Bildbreite / Bildhoehe, 120
 
 End If

Next lngZeile

End Sub


Die Angaben zu Pfad und Dateinamen in Spalte A werden gelöscht und die Bilder werden eingefügt.

Schau mal, ob das so funktioniert, wie du willst.

Gruß

M.O.

0 Punkte
Beantwortet von joe-ker Einsteiger_in (21 Punkte)

Danke für Dein Support!

Folgende Fehlermeldung:

Laufzeitfehler 6: Überlauf

Aussehen tut es so:

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Bearbeitet von m-o

Hallo,

versuche mal Folgendes:

Ändere die Zeilen

Dim Bildbreite As Long
Dim Bildhöhe As Long

in

Dim Bildbreite As Double
Dim Bildhöhe As Double

Die Bildhöhe ist die, die du wolltest. Passe entsprechend die Zeilenhöhe an (150).

Gruß

M.O.

...