Clevemayer Geschrieben 21. Mai 2010 Teilen Geschrieben 21. Mai 2010 Hallo Leute, ich hab mal im Netz gesucht und dazu nichts für mich brauchbares gefunden. Excel 2007 WinXP SP3 eine Exceltabelle in einer Spalte steht ein Bildname 123.jpg. der Pfad ist immer der gleiche. ich möchte das Bild einfügen mit einer bestimmten Höhe und Breite (selbst definierbar), eine Zelle, neben der Zelle in dem der bildname steht und die darunterliegende Zelle auf die selbe Größe anpassen. Wie ich erfahren habe, war es ja bis Excel 2003 nicht möglich ein bild direkt in eine Zelle in zu fügen, ist das jetzt möglich? Vorm Prinzip her ists mir klar ein Makro VBA-Skript: 1. Pfad fix hinterlegen 2. Variable für Bildnamen hinterlegen 3. Zählvariable 4. Anzahl der Zeilen mit einem Rowcount (ist das korrekt?) der Zeile in der sich der Bildername befindet in der Zählvariable hinterlegen 5. dann aus der aktuellen Zelle mit Hilfe der Zählvariable, den Inhalt in die Variable für Bildnamen hinterlegen. 6. dann das entsprechende Bild öffnen über der Zelle rechts daneben 7. Bildgröße ändern 8. Zellengröße ändern 9. nächste Zeile 10. Ende mal ein grober PAP, aber ich brauch das Heute, wenn möglich, bin die ganze Zeit am testen hab aber bisher noch kein VBA-Skript selbst erstellt nur immer entsprechende Skripte angepasst. MfG cleve Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Clevemayer Geschrieben 21. Mai 2010 Autor Teilen Geschrieben 21. Mai 2010 Damit keiner denkt ich frage ohne mir Mühe zu machen, hier mein Quellcode bisher, ich wull nur noch diei Zellen anpassen und das Bild, dann an der Zelle ausrichten: Sub bilder() Const strPATH = "Pfad" ' anpassen !!! Dim i As Long Dim bildname As String Dim bild As String i = 2 For i = 2 To Cells(Rows.Count, 5).End(xlUp).Row bildname = Cells(i, 5) If bildname <> "" Then bild = strPATH & bildname Cells(i, 6) = ActiveSheet.Pictures.Insert(bild).Select With Selection .Left = ActiveCell.Left 'verschieben nach links .Top = ActiveCell.Top 'verschieben nach unten '.Width = Breite '***** Breite anpassen !!!aber Höhe im gleichen Verhältnis End With End If Next wie gesagt, den einen Teil der Frage hab ich mir selbst beantwortet, nur wie kann ich denn jetzt das Bild IN die Zelle tun? MfG Kuye Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 21. Mai 2010 Teilen Geschrieben 21. Mai 2010 Wie kommst du denn auf die Idee, dass man das Bild eine einzelne Zelle einfügen kann? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Clevemayer Geschrieben 21. Mai 2010 Autor Teilen Geschrieben 21. Mai 2010 @lupo nicht direkt einfügen, sondern das Format einer Zelle ändern, ich werde alle Bilder auf eine Größe bringen und die Zellen auch, ich will nur, das er das Bild dann "in" (bzw. über) der einzelnen Zelle dann ausgibt. MfG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Clevemayer Geschrieben 25. Mai 2010 Autor Teilen Geschrieben 25. Mai 2010 (bearbeitet) Soh, hier meine Lösung, nur habe ich ein Problem, ab eienr bestimmten stelle, legt er mir alle Bilder übereinander, und ich weiss nicht wieso... denn bei über 260 Bildern klappt es, kann ess ein das die Variable for den Abstand von Oben nicht groß genug ist? Sub bilder() Const strPATH = "Bilderpfad" ' anpassen !!! Dim i As Long Dim bildname As String Dim bild As String Dim oben As Long 'hat tatsächlich daran gelegen, jetzt funktioniert das Skript 1a 'setzt die Höhe und die Breite der Spalte Columns("F:F").Select Selection.ColumnWidth = 20 Selection.RowHeight = 120 'erster Abstand von Oben, wird später hochgezählt, + Zellenhöhe um Bild in 'nächste Zeile zu schieben. oben = 70 'i auf 2, da das erste Bild in der 2. Zeile steht i = 2 For i = 2 To Cells(Rows.Count, "E").End(xlUp).Row bildname = Cells(i, "E") 'Bildname aus Spalte E If bildname <> "" Then 'prüfung auf leeren Bildnamen bild = strPATH & bildname 'der Pfad zum Bild On Error Resume Next ActiveSheet.Pictures.Insert(bild).Select 'öffnet Bild With Selection .Height = 110 'skaliert höhe .Width = 100 'skaliert breite .Left = Selection.Left + 580 'Abstand von Links .Top = (Selection.Top + oben) 'Abstand von Oben End With oben = oben + 120 'Variable Oben wird hochgezähhlt. End If Next End Sub MfG Cleve EDIT: hat an der Variablen Oben als Integer gelegen, hab sie in Long geändert, nun läuft das ganze sauber. Bearbeitet 25. Mai 2010 von Clevemayer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.