Bilder mit Bilddaten nach Word/Excel

Allgemein Bilder mit Bilddaten nach Word und Excel 2.01

praetor

Mitglied
Dabei seit
24.10.04
Beiträge
2.144
Standort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
Hallo Harald,
ich hab ein bisschen rumexperimentiert und bin erstmal auf die selben Probleme gestoßen, wie Du. Was aber zu gehen scheint:

1. Die Bilder zunächst mal verkleinern, z.B. längste Seite 3 cm. Das muss nicht zwingen im Skript erfolgen, das sind per Stapelverarbeitung ja nur ein paar Klicks.

2. Die Zellen der Exeltabelle, wo die Bilder rein sollen. so vorbereiten, dass die verkleinerten Bilder sicher hineinpassen, also z.B. 3,5 cm x 3.5 cm. Da geht z.B. so:

Sub Quadratzelle()
'Zellengröße 3 cm im Quadrat
'Selection.RowHeight = 85
'Selection.ColumnWidth = 14.29

'Zellengröße 3,5 cm im Quadrat
Selection.RowHeight = 99.25
Selection.ColumnWidth = 16.86

'Zellengröße 4 cm im Quadrat
'Selection.RowHeight = 113.25
'Selection.ColumnWidth = 19.43
End Sub


3. Die Bilder in die Zellen einfügen.

4. Es sollte die Eigenschaft „Von Zellposition und -größe abhängig“ gesetzt werden, obgleich das anscheinend nicht in allen Fällen gegen komische Effekte beim Filtern hilft.

5. Damit die Spalte mit den Bildern beim Filtern und Sortieren der Tabelle mitgenommen wird, muss in den Zellen mit den Bildern auch Text stehe, am besten überall das selbe Zeichen.
Damit dieses Dummy-Zeichen nicht sichtbar ist, sollte die vertikale Textausrichtung auf „oben“ gesetzt werden.

Hier mal eine Beispieltabelle. Danke, dass Du Dich damit befasst.
 
Zuletzt bearbeitet:

Mecki14

Mitglied
Dabei seit
15.03.06
Beiträge
2.810
Standort
Düsseldorf
Trophäen
einige {*} {!} * !
Hallo Andreas,
mit viel Googelei nach passendem vba-Code und Experimentieren mit vb-Code habe ich eine hoffentlich passable Lösung gefunden. Ich habe eine Testversion angehängt.

Beispiel:
Bilder in Excel.png


Einstellungen, die später über die Bedienoberfläche möglich sein sollen, findest Du im Scriptcode hier:

306 const Thumbnail = true 'wenn true -> 1. Spalte Thumbnaileinträge
307 const BildAnz = true 'wenn true -> 1. Spalte Bildanzeige statt Thumbnail

2021 'Excel-Optionen:
2022 'Erweitert/Anzeige/Linealeinheiten = Standardeinheiten
2023 'Breite = 4,8675 / cm | ermittelt mit Excel 2016
2024 'Höhe = 28,3125 / cm | und Schrift Calibri 11
2025 const ZB = 5 'Zellbreite für Bildansicht in cm
2026 const ZH = 5 'Zellhöhe für Bildansicht in cm

Übrigens, der Tipp ein Dummyzeichen oben links in die Bildzelle einzutragen, war hilfreich.
 

Anhänge

Zuletzt bearbeitet:

praetor

Mitglied
Dabei seit
24.10.04
Beiträge
2.144
Standort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
Hallo Harald,
Danke für die Testversion. Ich habe jetzt sehr ausgiebig rumprobiert. Deine Lösung funktioniert grundsätzlich. Beim Filtern oder Sortieren in Excel habe ich gelegentlich weiterhin den Effekt, dass die Spalte mit den Bildern nicht korrekt mitgezogen wird, manchmal entsteht Durcheinander, warum, weiß ich noch nicht genau. Ich hab dann mit Originalbilder und verkleinerte Bildern probiert und bin dabei auf das grundsätzliche Problem gestoßen, dass Dein Code nicht das eigentliche Bild in die Exceltabelle einfügt, sondern nur einen Link. Wird die Datei dann weitergegeben, ist das Bild weg. Über dem Excel-Makrorekorder bekommt man geeigneten Code leider nicht raus. Laut Google ist es aber so, dass statt activesheet.Pictures.Insert der Befehl activesheet.Shapes.AddPicture genutzt werden muss (s. z.B. Excel VBA - Shapes.AddPicture vs Pictures.Insert into spreadsheet from mapped drive). Könntest Du da bitte noch mal schauen?
 

praetor

Mitglied
Dabei seit
24.10.04
Beiträge
2.144
Standort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
Das hat bei mir testweise funktioniert:

Sub do_insertPic()
Dim picname As String
Dim MyRange As String
Dim myleft As Integer
Dim mytop As Integer
Dim sht As Worksheet: Set sht = ActiveSheet
Dim rcell As Range

picname = "c:\Users\praet\test.jpg"
MyRange = "A1"
myleft = 2
mytop = 2
Range(MyRange).Select
On Error GoTo ErrNoPhoto

With sht.Shapes
.AddPicture _
Filename:=picname, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=myleft + 4, _
Top:=mytop + 4, _
Width:=-1, _
Height:=-1

End With
On Error GoTo 0
Exit Sub
ErrNoPhoto:
Debug.Print "Unable to Find Photo" 'Shows message box if picture not found
End Sub
 

m.s

FF-Team
Mitarbeiter
Dabei seit
19.09.02
Beiträge
11.274
Ich habe für Lightroom ein Plugin, das Bilder als Excelliste exportieren kann und auch die Vorschaubilder anzeigt. Allerdings erzeugt das Plugin eine HTML-Struktur, die sich allerdings in Excel laden lässt. In den Quellcode des Plugins konnte ich leider nicht reinschauen, da verschlüsselt. Im Anhang findest du so eine Struktur, vielleicht kannst du ja was damit anfangen.
 

Anhänge

praetor

Mitglied
Dabei seit
24.10.04
Beiträge
2.144
Standort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
Danke Micha. Beim Import nach Excel gehen allerdings anscheinend die Verknüpfungen zu den Bildern verloren. Also eher nicht gut verwendbar.
 

m.s

FF-Team
Mitarbeiter
Dabei seit
19.09.02
Beiträge
11.274
Hmm, ich sehe sie, wenn ich die Datei in Excel lade. Habe Office 365.
 

praetor

Mitglied
Dabei seit
24.10.04
Beiträge
2.144
Standort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
Ich arbeite eigentlich auch mit Office 365.
 
Zuletzt bearbeitet:

praetor

Mitglied
Dabei seit
24.10.04
Beiträge
2.144
Standort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
Hallo Harald,
das sieht doch schon richtig gut aus! Die Bilder bleiben in der Exceltabelle sichtbar, auch wenn das Quellverzeichnis nicht mehr im Zugriff ist.
Dass es zu Fehlanzeigen kommt (überflüssige Bilder am Tabellenende), wenn man den Tabelle nach bestimmten Kriterien filtern, ist wohl nicht zu ändern. Ich halte das für einen Fehler in Excel. Die Eigenschaft „von Zellposition abhängig“ ist bei den Bildern ja korrekt gesetzt.

Was man noch optimieren kann, ist die Größe der Bilder in der Tabelle. Bei
const ZB = 5 'Zellbreite für Bildansicht in cm
const ZH = 5 'Zellhöhe für Bildansicht in cm
const ThB = 100

sind die Bilder zu klein für die Zellen.

Ich habe bisschen probiert, bei folgenden Kombinationen wird der Platz ziemlich gut ausgenutzt.

const ZB = 3 'Zellbreite für Bildansicht in cm
const ZH = 3 'Zellhöhe für Bildansicht in cm
const ThB = 75 'Thumbnail: längste Seite in px

const ZB = 4 'Zellbreite für Bildansicht in cm
const ZH = 4 'Zellhöhe für Bildansicht in cm
const ThB = 100 'Thumbnail: längste Seite in px

const ZB = 5 'Zellbreite für Bildansicht in cm
const ZH = 5 'Zellhöhe für Bildansicht in cm
const ThB = 130 'Thumbnail: längste Seite in px

const ZB = 6 'Zellbreite für Bildansicht in cm
const ZH = 6 'Zellhöhe für Bildansicht in cm
const ThB = 150 'Thumbnail: längste Seite in px

const ZB = 7 'Zellbreite für Bildansicht in cm
const ZH = 7 'Zellhöhe für Bildansicht in cm
const ThB = 180 'Thumbnail: längste Seite in px


Ob das in allen Auflösungen etc. auch so klappt, da bin ich unsicher. Die Größe der Zelle ist ja in cm angegeben, die Skalierung der Bilder erfolgt aber in pxl.
 

Mecki14

Mitglied
Dabei seit
15.03.06
Beiträge
2.810
Standort
Düsseldorf
Trophäen
einige {*} {!} * !
Hallo Harald,
das sieht doch schon richtig gut aus! Die Bilder bleiben in der Exceltabelle sichtbar, auch wenn das Quellverzeichnis nicht mehr im Zugriff ist.
Dann werde ich jetzt mal im Skript aufräumen. Beim Experimentieren ist der Code doch teilweise sehr strubbelig geworden. Außerdem werde ich die Bedienoberfläche so erweitern, dass die Parameter für die Bildanzeige individuell eingestellt werden können. Und die Kurzbeschreibung muss dann auch noch angepasst werden.
 

kuni-r

Mitglied
Dabei seit
26.11.02
Beiträge
5.454
Standort
Nähe Memmingen
Trophäen
auch
Alles prima soweit bei mir (Excel 2010), nur funktioniert die Ausrichtung bei mir nicht. Kann aber an meinem ollen Excel liegen.
 

praetor

Mitglied
Dabei seit
24.10.04
Beiträge
2.144
Standort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
Vielen Dank Harald!
Klappt prima.
Wäre es bitte noch möglich, die Spalte "Bildnummer" (= k) als "Zahl" zu formatieren? Oder vielleicht ist es besser, alle Excel-Spalten vor dem Einfügen der Daten als "Standard" zu formatieren. Je nach Dateninhalt sollte sich dann auch eine jeweils sinnvolle Formatierung, die eine Weiterverarbeitung erleichtert, ergeben.
 

Sasssoft

Mitglied
Dabei seit
02.07.04
Beiträge
5.492
Standort
Albersdorf (Schleswig-Holstein)
Trophäen
{******} ********* !!!!!!!!!!!!
Meine ersten Versuche sind auch sehr gut gelungen.
Ich habe bisher immer die Variante mit der Word-Ausgabe verwendet, aber an Excel mit Bild könnte ich mich auch gewöhnen.

Gruß
Alfred
 

Mecki14

Mitglied
Dabei seit
15.03.06
Beiträge
2.810
Standort
Düsseldorf
Trophäen
einige {*} {!} * !
Wäre es bitte noch möglich, die Spalte "Bildnummer" (= k) als "Zahl" zu formatieren? Oder vielleicht ist es besser, alle Excel-Spalten vor dem Einfügen der Daten als "Standard" zu formatieren.
Hallo Andreas,
für einen bestimmten Wert eine bestimmte Formatierung festzulegen ist schwierig, da die Spalte in der der Wert steht, von der Initialisierungsdatei abhängt. Alle Spalten als "Standard" zu formatieren ist auch keine gute Idee, da z.B. bei der Belichtungszeit aus 1/17 dann 17. Jan wird. Um so etwas zu verhindern, müsste ich nochmal jeden Wert mir ansehen und ggf. anders formatieren. Das ist mir aber ehrlicherweise zu viel Arbeit. Also muss der Nutzer bei Bedarf einzelne Spalten händisch formatieren, was ja schnell und einfach machbar ist.

Alles prima soweit bei mir (Excel 2010), nur funktioniert die Ausrichtung bei mir nicht.
Hallo Kuni,
erkläre doch mal bitte genauer was Du meinst (evtl. Screenshot).
 

Mecki14

Mitglied
Dabei seit
15.03.06
Beiträge
2.810
Standort
Düsseldorf
Trophäen
einige {*} {!} * !
Hallo Kuni,
da handelt es sich um ein Riesenmissverständnis. Die Bildparameter gelten nur für WORD. Das ist leider nicht erkennbar und werde ich ändern indem die Gruppe "Bildparameter" künftig "Bildparameter für Word" heißen wird und die Gruppe "Layout" in "Layout für Word" umbenannt wird.
Für Excel gibt es nur die mit dem Befehl Bildansicht aufrufbaren Einstellungen. Die Lage ist in Excel nicht bestimmbar. Daher werden die Bilder immer links oben in der vergrößerten Zelle angezeigt.
 

praetor

Mitglied
Dabei seit
24.10.04
Beiträge
2.144
Standort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
für einen bestimmten Wert eine bestimmte Formatierung festzulegen ist schwierig, da die Spalte in der der Wert steht, von der Initialisierungsdatei abhängt. Alle Spalten als "Standard" zu formatieren ist auch keine gute Idee, da z.B. bei der Belichtungszeit aus 1/17 dann 17. Jan wird. Um so etwas zu verhindern, müsste ich nochmal jeden Wert mir ansehen und ggf. anders formatieren. Das ist mir aber ehrlicherweise zu viel Arbeit. Also muss der Nutzer bei Bedarf einzelne Spalten händisch formatieren, was ja schnell und einfach machbar ist.
Hallo Harald,
alles klar und absolut nachvollziehbar. Nachbearbeitung der Excel-Tabelle ist auch in der Tat kein großes Problem. Allerding reicht es nicht, die Spalte neu zu formatieren. Die Inhalte bleiben dann trotzdem Text. Aber es gibt einen Weg, um das für die gesamte Spalte in einem Rutsch zu korrigieren.
 
Oben