Hallo Anton,
Es gibt Hilfen, da tät ich den Stifter gerne mal kurz drücken! Das hier gehört ganz dringend dazu :-))!! So wie Du Dich da reingekniet hast, und mir nebenbei gleich noch ein paar andere Dinge beigebracht hast! Vielen Dank dafür!!
Hab nun schon kapiert, wie das geht mit den einzelnen Abfragen. Hab mir Deinen Code "bild_aufgenommen_am" nochmal in Ruhe angesehen. Und daraus wird ja wirklich klar, wie die einzelnen Eigenschaften abzufragen sind. Jetzt die Dateien nicht einzeln aus dem Öffnen-Fenster holen, sondern mit einer Schleife die bereits in einem Sheet aufgelisteten Dateien durchgehen - klappt wunderbar. Das Ergebnis trag ich dann in die Spalte daneben ein. UND BIN GLÜCKLICH :-)))!!! Auch Kameramodell, falls manchmal erforderlich.......... Toll!!!!
Als Nebeneffekt hab ich grad noch gemerkt, dass sich, wohl weil das Datum als Text eingetragen wird, wunderbar nach dieser Datumsspalte sortieren läßt (ohne die Sortierprobleme, die es sonst oft gibt mit Datumsangaben).
EINE FRAGE WÄRE JETZT NUR NOCH, ob sich das Ganze noch beschleunigen ließe. Ich nehme an, dass das deswegen langsam ist, weil jedes Mal eine txt-Datei erstellt und hinterher wieder geschlossen und gelöscht werden muss. Ob sich das auch in eine Variable einlesen ließe, aus der man dann ebenfalls die einzelnen Informationen gezielt wieder rausholen kann? Unten mein momentaner Testcode.......
Und eine Nicht-Excel-Frage vielleicht noch: hast Du eine Idee, warum ich auf C:\ nicht schreiben kann? Warum mir da die Rechte fehlen? Kann ich da was tun? Installieren z. B. kann ich ja auch alles.............. Oder ist das von ACER gesperrt und soll so sein - warum auch immer ......?
Ganz begeisterte Grüße
Franz
Sub Bild_Informationen()
'Dez. 2009: von Anton aus Herber-Forum: https://www.herber.de/forum/archiv/1120to1124/t1122218.htm
Dim iview As String, bild, WshShell As Object
Dim fso As Object, temp As Object, zeile As String
Dim i As Long, LoLetzte As Long
If Range("A65536") = "" Then LoLetzte = Range("A65536").End(xlUp).Row _
Else: LoLetzte = 65536
iview = "C:\Program Files\IrfanView\i_view32.exe" 'ANPASSEN
'bild = Application.GetOpenFilename("JPG Bilder (*.jpg), *.jpg")
For i = 1 To LoLetzte
bild = Cells(i, 1)
If bild <> False Then
Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
iview = fso.getfile(iview).ShortPath
WshShell.Run iview & " " & bild & " /fullinfo /info=d:\temp.txt", , True
Set temp = fso.OpenTextFile("d:\temp.txt", 1, False)
Do While temp.AtEndOfStream <> True
zeile = temp.ReadLine
If InStr(1, zeile, "DateTimeOriginal - ") <> 0 Then Exit Do
'If InStr(1, zeile, "Make") <> 0 Then Exit Do
Loop
temp.Close
zeile = Replace(zeile, "DateTimeOriginal - ", "")
'MsgBox zeile, 64
Cells(i, 2) = zeile
Kill "d:\temp.txt"
Set fso = Nothing
Set WshShell = Nothing
End If
Next i
End Sub