Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1660to1664
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Bild in Zellen einer Spalte einfügen
30.11.2018 18:39:03
Kalle
Hallo liebe VB und Excel-Freaks,
ich möchte aus einer Datei ein oder mehrere Bilder in Spalte B einfügen lassen.- Untereinander Zeile für Zeile. Daneben in Spalte C sollte möglichst noch der Name des Bildes z.B. (Bild1") eingefügt werden.
Meine VB_Kenntnisse sind mit nachstehendem Code leider schon erschöpft. Damit wird zwar das gewünschte Bild eingefügt, aber leider nicht dort wo ich es gerne hätte. Ich komm einfach nicht weiter.
Toll wäre auch, wenn ich zum Auswählen der Bilder direkt auf den Ordner mit den Bildern zugreifen könnte. Dieser wird mit :
MkDir ActiveWorkbook.Path & "\Bildarchiv"
erstellt - falls er nicht schon vorhanden ist- und liegt deshalb immer relativ mit dem Namen "Bildarchiv" als Unterordner im gleichen Ordner wie die Datei.
Freue mich auf jede Unterstützung und bedanke mich schon mal ganz herzlich hierfür.
Viele Grüße Kalle

Sub Bild_Einfügen()
Dim Dat As String
Dim Zelle As Range
Dim ScaleA As Double
Set Zelle = ActiveCell 'hier soll das Bild rein
Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Select
Dat = Application.GetOpenFilename(, , "Bild auswählen", , False)
Select Case Right(Dat, 3)
Case "bmp", "jpg", "tif", "gif"
ActiveSheet.Pictures.Insert(Dat).Select
With Selection.ShapeRange
.Top = Zelle.Top
.Left = Zelle.Left
ScaleA = WorksheetFunction.Min(Zelle.Width / .Width, Zelle.Height / .Height)
.Height = .Height * ScaleA
End With
Selection.Placement = xlMoveAndSize
Selection.PrintObject = True
Case Else
MsgBox "Sie haben kein gültiges Bild ausgewählt"
End Select
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bild in Zellen einer Spalte einfügen
30.11.2018 20:48:09
Piet
Hallo
statt diesen Code - ActiveSheet.Pictures.Insert(Dat).Select- probier es bitte einmal anders:
Gib die richtige Zelle an wo das Bild hin soll! Hinweis: die Linke obere Excke kommt in die angegebene Zelle. (uss gross genug sein)
Range("xxxx").PasteSpecial xlPasteAll
Diesen Vorschlag findest du im Thread: - 1657588 Bilder aus Tabellenblatt in Übersicht kopieren - Alex 15.11.2018 14:33:47
mfg Piet
AW: Bild in Zellen einer Spalte einfügen
01.12.2018 12:35:09
Karl-Heinz
Hallo Kalle,
hier noch mal ein erweiterter Ansatz, mit dem Du Bilder etwas flexibler einfügen kannst:
Sub Bild_Einfügen()
Dim Datei As Variant, Filter As String, Teil() As String
Dim Zelle As Range, i As Integer
Dim ScaleA As Double
On Error Resume Next
Set Zelle = Application.InputBox(Prompt:="Bitte Zielzelle wählen!", _
Default:=Cells(Rows.Count, "C").End(xlUp).Offset(1, -1).Address, Type:=8)
If Zelle Is Nothing Then Exit Sub
Filter = "Alle (*.bmp;*.gif;*.jpg;*.png;*.tif), *.*,BitMaps (*.bmp),*.bmp,GIFs (*.gif),*.gif, _
JPegs (*.jpg),*.jpg,PNGs (*.png),*.jpg,TIFs (*.tif), *.tif" '
ChDir ActiveWorkbook.Path & "\Bilder" '"\Bildarchiv"
Datei = Application.GetOpenFilename(Filter, 1, "Bild auswählen", , True)
For i = 1 To UBound(Datei)
Select Case Right(Datei(i), 3)
Case "bmp", "jpg", "tif", "gif"
ActiveSheet.Pictures.Insert(Datei(i)).Select
With Selection.ShapeRange
.Top = Zelle.Offset(i - 1, 0).Top
.Left = Zelle.Offset(i - 1, 0).Left
ScaleA = WorksheetFunction.Min(Zelle.Width / .Width, Zelle.Height / .Height)
.Height = .Height * ScaleA
End With
Selection.Placement = xlMoveAndSize
Selection.PrintObject = True
Teil = Split(Datei(i), "\")
Teil = Split(Teil(UBound(Teil)), ".")
Zelle.Offset(i - 1, 1).Value = "Bild: " & Teil(0)
Case Else
MsgBox "Sie haben kein gültiges Bild ausgewählt!", vbOKOnly Or vbCritical, "Bild einfü _
gen"
End Select
Next i
End Sub
Es wird eine Einfügezelle in Spalte "B" vorgeschlagen, die Du nehmen oder auch ändern kannst.
Über Multiselect kannst Du bei Bedarf auch gleich mehrere Bilder auswählen.
Der Bildname (Dateiname) wird rechts neben die Bildzelle geschrieben.
Sschau mal, ob Du damit was anfangen kannst...
viele Grüße aus Hessen
Karl-Heinz (Kalle)
Anzeige
AW: Bild in Zellen einer Spalte einfügen
01.12.2018 14:43:27
Kalle
Hallo Karl-Heinz
vielen Dank für Dein Makro, das auch jetzt genauso funktioniert, wie ich mir vorgestellt habe.
Ein kleiner Fehler war in Deinem Code.
Beim Debuggen mit Einzelschritt hab ich gesehen, dass das Problem in folgendem Bereich liegt: und die Reihenfolge des Ablaufs falsch war.
With Selection.ShapeRange
.Top = Zelle.Offset(i - 1, 0).Top
.Left = Zelle.Offset(i - 1, 0).Left
ScaleA = WorksheetFunction.Min(Zelle.Width / .Width, Zelle.Height / .Height)
.Height = .Height * Scal
End With
Nach Umstellung der Zeilen:
With Selection.ShapeRange
ScaleA = WorksheetFunction.Min(Zelle.Width / .Width, Zelle.Height / .Height)
.Height = .Height * ScaleA
.Top = Zelle.Offset(i - 1, 0).Top
.Left = Zelle.Offset(i - 1, 0).Left
End With
hat`s dann problemlos funktioniert. (Bin ganz stolz auf mich: Über dieses Erfolgserlebnis in VB ;-) )
Ja dann noch: Viele Grüße vom kurpfälzischen (Karl-Heinz) Kalle an den hessischen Karl-Heinz (Kalle)
Anzeige
AW: Bild in Zellen einer Spalte einfügen
01.12.2018 18:08:23
Karl-Heinz
Schön, dass es Dir gefällt.
PS: Die Reihenfolge war schon so und dürfte auch egal sein. Bei mir ging es auf jeden Fall.
Aber ich glaube, es gibt noch ein anderes Problem. Es müsste so sein:
ScaleA = WorksheetFunction.Min(Zelle.Offset(i - 1, 0).Width / .Width, Zelle.Offset(i - 1, 0).Height / .Height)
Sonst wird bei mehreren Bildern immer die Höhe/Breite des ersten Zelle genommen. Wenn alle Zeilen gleich hoch/breit sind, spielt das keine Rolle.
VG KH
AW: Bild in Zellen einer Spalte einfügen
02.12.2018 21:30:44
Kalle
Hallo Karl-Heinz
nochmals vielen herzlichen Dank für Deine Hilfe.
VG Kalle

402 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige