Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1112to1116
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
Inhaltsverzeichnis

Bilder sortieren nach Aufnahmedatum

Bilder sortieren nach Aufnahmedatum
Franz
Hallo Fachleute,
ich habe in einem Ordner jpeg-Dateien aus verschiedenen Kameras mit unterschiedlichen Namen und Nummern. Im Windows-Explorer lassen sich die Dateien auch nach Aufnahmedatum sortieren.
Nun möchte ich die Dateien auch nach Aufnahmedatum sortiert in eine Excel-Datei einlesen. Mit folgendem Code werden die Dateien immer nach Namen sortiert eingelesen:
Sub auflisten()
Dim iCounter As Integer
Dim sPath As String
sPath = ThisWorkbook.Path
Columns("B:B").ClearContents
With Application.FileSearch
.NewSearch
'.FileType = msoFileTypeAllFiles
.Filename = "*.jpg"
.LookIn = sPath
'.SearchSubFolders=True
.Execute
If .FoundFiles.Count = 0 Then
Beep
MsgBox "Keine Dateien   gefunden!"
Else
For iCounter = 1 To .FoundFiles.Count
Cells(iCounter + 3, 2) = Mid(.FoundFiles(iCounter), InStrRev(.FoundFiles(iCounter), "\") _
+ 1)
Next iCounter
End If
End With
End Sub

Gibt es auch die Möglichkeit, die Dateien nach Aufnahmedatum bzw. auch nach Änderungsdatum einzulesen? Ich bitte um Eure Hilfe.
Danke schon mal im Voraus und Grüße
Franz

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

Betreff
Benutzer
Anzeige
AW: Bilder sortieren nach Aufnahmedatum
04.11.2009 13:27:30
Rudi
Hallo,
vielleicht hilft das weiter:
Public Sub Dateieigenschaften()
'von K.Rola
Dim objShell As Object, objFolder As Object
Dim intIndex As Integer, intColumn As Integer, lngRow As Long
Dim varName, arrItems()
Dim strFolder As Variant
Dim wksListe As Worksheet
Set wksListe = Sheets("Dateiliste")
With Application.FileDialog(4)
.AllowMultiSelect = False
.InitialFileName = "c:\"
.InitialView = 1
.Title = "Bitte einen Ordner wählen"
If .Show = -1 Then
strFolder = .SelectedItems(1)
End If
End With
If strFolder = "" Then
Exit Sub
End If
Application.ScreenUpdating = False
wksListe.Cells.Clear
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(strFolder)
intColumn = 1
ReDim arrItems(1 To 201, 1 To 1)
For intIndex = 0 To 200
arrItems(intColumn + intIndex, 1) = IIf(objFolder.getdetailsof(varName, intIndex) = "", "x", _
objFolder.getdetailsof(varName, intIndex))
Next
Rows(1).Font.Bold = True
lngRow = 2
For Each varName In objFolder.Items
ReDim Preserve arrItems(1 To 201, 1 To lngRow)
For intIndex = 0 To 200
arrItems(intColumn + intIndex, lngRow) = objFolder.getdetailsof(varName, intIndex)
Next
lngRow = lngRow + 1
Next
With wksListe
.Cells(1, 1).Resize(lngRow - 1, 201) = WorksheetFunction.Transpose(arrItems)
.Columns.AutoFit
End With
Application.ScreenUpdating = True
End Sub

Gruß
Rudi
Anzeige
AW: Bilder sortieren nach Aufnahmedatum
04.11.2009 14:39:29
Franz
Hallo Rudi,
puuhh!! Aber sehr gut für's Erste, danke schon mal!! Aber puuhh!!, weil der Code meine Fähigkeiten bei weitem übersteigt - kommt ja auch von K.Rola :-)). Es wird (u.a. auch) aufgelistet, was ich wünsche, wunderbar; aber viel mehr, was ich überhaupt nicht benötige.
Natürlich kann ich nach dem Auflisten per VBA das Blatt so formatieren, wie es ausschauen soll (Spalten verbergen, anders anordnen, ...). Aber schöner wäre es natürlich, gleich nur die gewünschten Items auszuwählen.
Gibt es die Möglichkeit einzelne Items gezielt auszuwählen? Was vor allem auch die Laufzeit des Codes bei vielen Dateien mächtig verkürzen würde!
Grüße
Franz
Anzeige
probier's hiermit:
04.11.2009 15:58:43
Anton
Hallo Franz,

Sub dateien_auflisten()
  Dim objShell As Object, objFolder As Object  
  Dim BrowseDir, varName, lngRow As Long  
  Set objShell = CreateObject("Shell.Application")  
  Set BrowseDir = objShell.BrowseForFolder(0, "Ordner auswählen", &H1000, 17)  
  If Not BrowseDir Is Nothing Then    
    Cells.Clear
    Set objFolder = objShell.Namespace(BrowseDir.self.Path)
    Cells(1, 1) = objFolder.GetDetailsOf(, 0)
    Cells(1, 2) = objFolder.GetDetailsOf(, 29)
    Cells(1, 3) = BrowseDir.self.Path
    Rows(1).Font.Bold = True
    lngRow = 2
    For Each varName In objFolder.items  
      If Right(UCase(varName), 3) = "JPG" Then  
        Cells(lngRow, 1) = varName
        Cells(lngRow, 2) = objFolder.GetDetailsOf(varName, 29)
        lngRow = lngRow + 1
      End If  
    Next
    Set objFolder = Nothing  
  End If  
  Set objShell = Nothing  
End Sub  

mfg Anton
Anzeige
Hinweis
04.11.2009 16:15:34
Rudi
Hallo,
mit der 29 musst du spielen. Bei mir ist das Aufnahmedatum die 25.
Gruß
Rudi
AW: Hinweis
04.11.2009 16:56:10
Franz
Danke Ihr Spezialisten,
damit krieg ich's hin. Allerdings sind die Zahlen bei mir wieder andere; ich hab jetzt:
12 fürs Aufnahmedatum
3 fürs Änderungsdatum
4 fürs Erstelldatum
5 für Letzter Zugriff
Dafür erstmal vielen Dank!!!
Jetzt kommt aber noch was (vielleicht) Schwieriges/Unmögliches (?) daher: hab ich ein Bild z. B. in Paintshop Pro behandelt, wird mit obigem Code kein Aufnahmedatum mehr aufgelistet?!?!? Obwohl im Bildprogramm bei den Informationen das ursprüngliche Aufnahmedatum noch unverändert drin ist!!!!!! Allerdings erscheint dann auch im Windows-Explorer das Aufnahmedatum nicht mehr.........
Gibt es da noch Abhilfe?
Grüße
Franz
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige