[Excel] Verknüpfung mit Bilddateien

aggitron

Commander
Registriert
Jan. 2006
Beiträge
2.074
Hallo,

wie bereits im Titel beschrieben möchte ich Bilddateien aus einen separaten Ordner mit einer csv Datei verknüpfen. Die csv Dateien werden von einem separaten Programm erzeugt auf das kein Zugriff erfolgen kann.

Ausgangssituation:

- eine, vom Aufbau her, immer gleiche csv Datei mit mehreren Spalten und Zeilen
- einen separaten Ordner im Netzwerk welcher Bilddateien enthält

Problemstellung:

In der csv gibt es eine Spalte mit 8stelligen Nummern. Diese Nummern entsprechen den Dateinamen der Bilddateien und sollen nun verknüpft werden. Ziel ist es das die Bilder in einer, auf die csv Datei angepassten Größe, in Excel dargestellt werden.

Lässt sich so etwas mit Excel Boardmitteln bewerkstelligen?
 
Hi,

ich weiß nicht, ob ich dich richtig verstanden habe,
aber mit dem Befehl

Code:
Hyperlink("Pfad"&"Nr")

kannst du den Hyperlink erzeugen.

Gruß,

Lasersword
 
Danke schon mal für den Hinweis.
Was ich im Eingangspost nicht ganz klar gemacht habe ist, das ich das natürlich nicht für jede Datei einzeln bearbeiten möchte. Der Vorgang soll also so weit wie möglich automatisiert werden.
 
Was meinst du mit
aggitron schrieb:
auf die csv Datei angepassten Größe

Und ansonsten willst du aus der csv-Datei die Nummern auslesen und dann einen Link zum jew. Bild setzen oder das Bild direkt in Excel einbinden?
 
Ich möchte es quasi als Thumbnail direkt in die Excel Datei einbinden.
 
So irgendwie?
Anhang anzeigen Desktop.rar


Im VBA-Editor (Alt + F11) musst du in Modul1 die Pfade zu den Dateien anpassen.
makro_pfade.png
 
Zuletzt bearbeitet:
Hallo Mr. Snoot, bitte entschuldige die späte Antwort.
Es ist weniger schwierig. Ich habe mich da sicherlich etwas missverständlich ausgedrückt.
Ich habe eine csv Datei welche aus einem Drittsystem kommt. Diese csv importiere ich in Excel und habe somit ein nur noch ein Excel File und einen Ordner mit den Bilddateien. In dieser Datei gibt es nun eine Spalte in der die Dateinamen der Bilddateien ohne Dateiendung stehen. Diese sollen nun verknüpft und das Bild in der Excel Datei (nach Möglichkeit in einer separaten, einzufügenden, Spalte) als Thumbnail angezeigt werden.
Dein Beispiel kommt dem also schon sehr nahe.

/edit
Ich möchte das Ganze dann auch für andere Excel Dateien verwenden. Es soll also nicht nur auf dieses File beschränkt sein.

/edit2

Damit funktioniert es schon mal ohne Zwischentabelle:

Code:
Sub bilder()

pfad = "D:\TEST\dahl\"
xls = "bilder.xls"
ActiveWindow.Visible = True

Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
anzahl = Range("A1").CurrentRegion.Rows.Count
Workbooks(xls).Worksheets("Tabelle1").Activate
Range("A1").Select
ActiveSheet.Paste

Workbooks(xls).Worksheets("Tabelle1").Activate

For i = 1 To anzahl
ActiveSheet.Pictures.Insert(pfad & Range("A" & i) & ".jpg").Select
Selection.ShapeRange.Height = 50
Selection.Cut
Range("B" & i).Select
ActiveSheet.Paste
Next i

End Sub

Ist es möglich die Spalten- und Zeilenbreite auf die Größe des Bildes anzupassen?
 
Zuletzt bearbeitet:
aggitron schrieb:
Ich möchte das Ganze dann auch für andere Excel Dateien verwenden. Es soll also nicht nur auf dieses File beschränkt sein.
Das Importieren der csv-Datei und/oder die auswahl des Ordners mit den Bildern?

Man könnte für beides ein Dialogfenster machen, wo man die Pfade auswählt.
Ist es möglich die Spalten- und Zeilenbreite auf die Größe des Bildes anzupassen?
Wenn du weißt, wie groß das Bild sein soll (Breite/Höhe in cm), dann kann man das im Makro hinterlegen.
 
Das Drittsystem spuckt täglich eine neue Datei aus in die dann auch jeden Tag die Bilder importiert werden sollen.
Am besten lässt sich das wohl per Excel AddIn lösen. Dazu müsste noch der Toolbar Aufruf integriert werden. Ich habe bisher allerdings nur Anleitungen gefunden welche nicht mit der 2007er Excel Version (oder höher) funktionieren.

Das mit der Zeilenhöhe hat sich zu meiner Zufriedenheit erledigt:

Code:
Public Sub bilder()

pfad = "D:\TEST\dahl\" 'Pfadangabe zum Bilderverzeichnis
xls = "bilder.xls" 'Dateiname
ActiveWindow.Visible = True

Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
anzahl = Range("A1").CurrentRegion.Rows.Count 'Zeilenanzahl bestimmen
Workbooks(xls).Worksheets("Tabelle1").Activate 'Tabelle auswählen
Range("A1").Select 'erste Zelle bestimmen
ActiveSheet.Paste
Rows("1:5000").RowHeight = 50#  'Zeilenhöhe auf 50 setzen

Workbooks(xls).Worksheets("Tabelle1").Activate

For i = 1 To anzahl
ActiveSheet.Pictures.Insert(pfad & Range("A" & i) & ".jpg").Select 'Bild auswählen
Selection.ShapeRange.Height = 50 'Bildgröße festlegen
Selection.Cut
Range("B" & i).Select 'Spalte zum einfügen des Bildes bestimmen
ActiveSheet.Paste
Next i

End Sub

Die Kommentare habe ich mal für mich selbst eingefügt. Bitte korrigiere mich falls ich etwas falsch bestimmt habe.

Die Variante mit der Dialogbox wäre natürlich ganz edel.
Diese Zeile müsste für den täglichen Gebrauch wohl auch angepasst werden: xls = "bilder.xls" 'Dateiname

Vielen Dank für deine Geduld mit mir. :)
 
Zuletzt bearbeitet:
Hab mal was gebastelt; das Ermitteln des Pfades für die Bilder ist nicht ganz so trivial, daher der ganze Code bevor das Makro selbst kommt.

Das ganze ist auch unabhängig von den Dateinamen.
 

Anhänge

Zuletzt bearbeitet:
Warum machst du das über diese Zwischentabelle?
Wenn ich die csv in Excel importiere habe ich doch die Daten in der xls direkt zur Verfügung.

Ich habe mal eine Beispieldatei angehängt (leicht verfälscht). In Spalte j stehen die Dateinamen.
Im optimalen Fall soll sich nun diese Tabelle um eine neue leere Spalte A erweitern in der für jede Zeile das Bild erscheint. Somit habe ich zu jeder Zeile mit Daten nun auch ein Bild dazu.
 

Anhänge

Eine Zwischentabelle hab ich eigentlich nicht - dachte, die Bilder aus der CSV sollen in ein anderes Excel.

Aber du willst die CSV mit eingefügten Bildern als Exceldatei speichern?
 
Genau. Die csv öffnen, Bilder einfügen und als xls speichern.
 
Irgendwo muss aber dein Makro liegen - in der csv geht das nicht.

Man kann das zwar auch irgendwie in der persönlichen Arbeitsmappe (personal.xls) hinterlegen, so dass das Makro in Excel immer zur Verfügung steht, aber damit hab ich mich noch nie befasst.

Ist ja im Grunde egal, ob du deine csv-Datei öffnest und als Excel speicherst, oder ein Excel-"Template" (mit Makro) benutzt und das unter neuem Namen speicherst. Man muss halt die Daten rüberkopieren.
 
Ich kenn das wie gesagt nur über die personal.xls. Dann müsstest du das Makro halt jedes mal über Entwicklertools | Makros starten anstatt den Weg über da AddIn zu gehen.
makro_personal_xls.png
Theoretisch dann das Makro da rein und fertig.


Wenn es die Datei bei dir nicht gibt, musst du sie erst anlegen. Dazu einmal mit dem Makrorekorder kurz ein Makro aufzeichnen und in der persönlichen Arbeitsmappe speichern - die wird dann angelegt.
makro_personl_arbeitsmappe.png
 

Ähnliche Themen

Zurück
Oben