• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Opgelost datum van foto

Dit topic is als opgelost gemarkeerd

popipipo

Meubilair
Lid geworden
21 nov 2006
Berichten
8.647
PHP:
Sub ListFiles()
'Create a list of files
'Run a few checks first...
    ActiveSheet.Unprotect
    ErrorMsg = "Problem creating list - check path."
    'On Error GoTo ErrorHandler
    If Range("Path").Value = "" Then GoTo ErrorHandler
    Application.ScreenUpdating = False
    DirName = Range("Path").Value
    If Right(DirName, 1) <> "\" Then DirName = DirName & "\"
    NextFile = Dir(DirName)
    If NextFile = "" Then MsgBox "Incorrect path specified or no files detected", vbInformation, "List files": Exit Sub
'Clear area for list
    Range("Filelist").Offset(1, 0).Select
    RowCounter = 0
    Range("B" & ActiveCell.Row & ":F65536").ClearContents
    Range("B" & ActiveCell.Row & ":F65536").Interior.ColorIndex = 2
'Loop to insert file name and details
    Do While NextFile <> ""
        ActiveCell.Offset(RowCounter, 0).Value = NextFile
        ActiveCell.Offset(RowCounter, 4).Value = NextFile
        ActiveCell.Offset(RowCounter, 1).Value = FileLen(DirName & NextFile)
        ActiveCell.Offset(RowCounter, 2).Value = FileDateTime(DirName & NextFile)
        NextFile = Dir()
        RowCounter = RowCounter + 1
    Loop
    If ActiveCell.Offset(1, 0).Value = "" Then [A1].Select: Exit Sub
'Sort alphabetically
    Selection.CurrentRegion.Select
    Selection.Sort key1:=Range(ActiveCell.Address), order1:=xlAscending, Header:=xlYes
    [A1].Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFormattingCells:=True, AllowInsertingRows:=True, AllowDeletingRows:=True, AllowSorting:=True
    Exit Sub
ErrorHandler:
    MsgBox ErrorMsg, vbInformation, "List files"
    [A1].Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFormattingCells:=True, AllowInsertingRows:=True, AllowDeletingRows:=True, AllowSorting:=True
    Exit Sub
    ' sortering toegevoegd

Met deze code importeer ik gegevens van meerdere foto's in excel.
De datum van de foto is echter de datum dat ik de foto op mijn PC heb gezet en niet de datum waarop de foto is gemaakt.



ActiveCell.Offset(RowCounter, 2).Value = FileDateTime(DirName & NextFile)

Hoe moet deze regel veranderd worden zodat ik echt de datum (en tijd) krijg waarop de foto is gemaakt.
 
@AHulpje
Dat lukt nu wel maar het heeft een vreemd datum formaat .
Ik ga daar morgen verder naar kijken.
 
Hoe moet deze regel veranderd worden zodat ik echt de datum (en tijd) krijg waarop de foto is gemaakt.
Ik zou eens goed nakijken of dat inderdaad de datum is > Genomen op
Bij Rudi lijkt mij dat niet goed.

Echter ik heb een tip.
Met Versie 1.5.0.1378a (x64) van de zoekmachine Everything (Voidtools) heb je eindeloos veel mogelijkheden om kolommen met details toe te voegen en dan te exporteren naar een CSV-bestand en een kleine test geeft bij mij wel de juiste datum aan.
 
Het indexnummer voor bestandseigenschappen is per Windowsversie verschillend.
Dat moet je nog even uitzoeken.

CSS:
Sub M_snb()
    c00 = "G:\OF\"
    c01 = Dir(c00 & "*.jpg")
    ReDim sn(2000, 3)
    
    With CreateObject("shell.application").Namespace(c00)
      Do While c01 <> ""
        sn(n, 0) = c00
        sn(n, 1) = c01
        sn(n, 2) = CDate(.getdetailsof(.items.Item(c01), 3))
        sn(n, 3) = .getdetailsof(.items.Item(c01), 1)
        n = n + 1
        c01 = Dir
      Loop
    End With
    
    Sheet1.Cells(1).Resize(n, UBound(sn, 2) + 1) = sn
    sheet1.columns(4).numberformat="dd-mm-jjjj uu:mm:ss"
End Sub
 
Eigenschappen voor je windowsversie vind je zo

Code:
Sub jec()
 With CreateObject("shell.application").Namespace("C:\Users\xxx\Music\")
    For i = 0 To 40
       Debug.Print i & " = " & .getdetailsof(Null, i)
    Next
 End With
End Sub
 
Het indexnummer voor bestandseigenschappen is per Windowsversie verschillend.
Dat moet je nog even uitzoeken.

CSS:
    sn(n, 3) = .getdetailsof(.items.Item(c01), 12)
Netjes! Bij mij geeft 12 de datum/tijdstip gemaakt
 
Kan ook via
Code:
CreateObject("WIA.ImageFile")
, zie
 
Toch even een nadere uitleg nadat ik iedereen bedank voor zijn/haar bijdrage.

Ik ben op vakantie geweest en heb foto's gemaakt met één fotocamera en met 2 telefoons.
Nu wil ik één bestand hebben met alle foto's van deze 3 toestellen maar dan op chronologische volgorde.
Dus ik heb de datum van opname nodig en niet de datum die in mijn pc geeft.
Dit is nl de datum waarop de foto's op mijn pc heb geplaatst.

Mijn fotobewerkingsprogramma kan sorteren op naam of datum , dit is de datum die mijn PC aan geeft.

Nu wil ik dus de naam van alle foto's veranderen door de datum en tijd of een volgnr van opname er voor te zetten.
Dan kan ik dus sorteren op naam die overeenkomt met de chronologische volgorde van opname.

Voor het veranderen van naam gebruik ik het excel bestand RenameFiles.xlsm
Deze haalt echter niet de opname datum-tijd op maar de pc datum tijd.

Door een van de aangegeven oplossingen te gebruiken moet ik dit weer koppelen aan het RenameFiles.xlsm bestand. Dit is omslachtig en wil ik eigenlijk vermijden.

Het bestand van AHulpje haalt wel de opnamedatum op maar met enkele vreemde niet zichtbare karakters.

Als iemand een ander idee heeft dan hoor ik het graag.
Alleen aan mijn fotobewerkingsprogramma kan ik niets doen, die kan alleen naam en pc datum ophalen en niet opname datum.
 

Bijlagen

Snb’s oplossing uit post 7 geeft met (bij mij eigenschap nr 12) de datum en tijdstip van het maken van de foto
 
Heb je dit bestand al geprobeerd?
De datum is in iso-formaat jaar-maand-dag-uur-minuut, dat gaat met sorteren altijd goed.
Zeker omdat jouw vakantie eind mei en begin juni was.
 

Bijlagen

Als je XnView MP" is gratis" installeert daar kun je een Tekst bestandje aanmaken en dat in PQ eventueel bewerken. Je moet er even mee rommelen maar werkt erg goed. Als je een paar foto's gedaan hebt kun je naar het voorbeeldje even kijken hoe het er uit ziet. Weet niet of de link hier mag.
Uitleg
 
@alphamax
Na het selecteren van de map gebeurt er niets

@ Jec
na het veranderen van de locatie van de foto's zie ik niets gebeuren als ik de macro start,

@snb en EVR
Hij haalt de goede datum op maar het formaat is tekst met enkele onzichtbare karakters
Dit zelfde euvel had ik ook al bij het bestandje van AHulpje
Zie FotoDetails bestandje uit #11
 
@popipipo , klopt dit is alleen om erachter te komen welke index je moet pakken voor de datum. Dit verschilt per windowsversie.

Als je erachter bent kun je die index in de code van snb gebruiken
 
Dat vreemde karakter is een unicode karakter, laat deze los op het werkblad Fotos en het verdwijnt als sneeuw voor de zon:
Code:
Sub ReplaceUnicode()
    ActiveSheet.Cells.Replace what:=ChrW(&HFFFD), replacement:="", lookat:=xlPart
End Sub
Daarna kun je de datumstring naar hartelust manipuleren tot een door jou gewenst formaat.
 
Nu wil ik dus de naam van alle foto's veranderen door de datum en tijd of een volgnr van opname er voor te zetten.
Dan kan ik dus sorteren op naam die overeenkomt met de chronologische volgorde van opname.
Er zijn toch ook andere programma's. Kijk eens of je met Advanced Renamer de bestanden niet kunt hernoemen met de juiste datum en volgnummer.
 
Laat deze eens los op de verkregen datums en laat iets weten.

Code:
Public Function StripNonAsciiChars(ByVal InputString As String) As String
    With CreateObject("VBScript.RegExp")
        .Global = True
        .MultiLine = True
        .IgnoreCase = True
        .Pattern = "[^\u0000-\u007F]"
        StripNonAsciiChars = Replace(Application.Trim(.Replace(InputString, "")), "-", "/")
    End With
End Function
 
Terug
Bovenaan Onderaan