ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   VBA to create directories based on 'date picture taken' (https://www.excelbanter.com/excel-programming/417182-vba-create-directories-based-date-picture-taken.html)

Tim

VBA to create directories based on 'date picture taken'
 
Hello Everyone,

[This is not strictly an Excel problem (sorry) but i only really use VBA in
Excel and i couldn't find a better newsgroup... and people here seem to know
everything! I posted this a while ago and got no response, so i'm just
giving it one last try before giving up]

i have a collection of unsorted photos in a directory which i want to order
into directories / sub-directories based on their date. eg, if the date a
picture (tim.jpg) is taken (i think this is from 'exif' data?) is 1st
september 2008, the directory structure would become: -

...\2008\2008_09\2008_09_01\tim.jpg

i would want to loop through each .jpg and create the relevant dirs\sub-dirs
where required. the icing on the cake would be to move the photos to the
correct sub-dir afterward!

i don't really know where to begin with it, so some pointers would be really
appreciated (or if someone knows of cheap/free software that will do this
without spending time on VBA that would be great... i've searched so far
unsuccessfully)

Thanks for any help,

Tim




Peter T

VBA to create directories based on 'date picture taken'
 
To get EXIF tags see here
http://tinyurl.com/ojdbz


For your purposes I assume you can just read the file dates, have a go with
the following

Sub testFolderDates()

FilesToFolderDates "c:\temp\pictures" ' << change

End Sub


Sub FilesToFolderDates(sFolder As String)

Dim sDates As String
Dim sDir As String
Dim sFile As String, sFileNew As String
Dim i As Long
Dim dt As Date
Dim arr
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object


If Right(sFolder, 1) < "\" Then sFolder = sFolder & "\"

Set objFSO = CreateObject("Scripting.FileSystemObject")

If Not objFSO.FolderExists(sFolder) Then
MsgBox sFolder & " does not exist"
Exit Sub
End If

Set objFolder = objFSO.GetFolder(sFolder)

For Each objFile In objFolder.Files

sFile = objFile.Name

' optional extension check
'If InStr(2, sFile, ".jp", vbTextCompare) Then

dt = objFile.DateCreated
If objFile.DateLastModified < dt Then dt = objFile.DateLastModified

sDates = Format(dt, "yyyy\\yyyy_mm\\yyyy_mm_dd")

If Not objFSO.FolderExists(sFolder & sDates) Then

arr = Split(sDates, "\")
sDir = sFolder
For i = 0 To 2
sDir = sDir & arr(i) & "\"
If Not objFSO.FolderExists(sDir) Then
MkDir sDir
End If
Next

End If

sFileNew = sFolder & sDates & "\" & sFile
Name sFolder & "\" & sFile As sFileNew

' End If ' optional extension check
Next
End Sub

Regards,
Peter T





"Tim" <tmarsh-trousers-@-take off my trousers to reply-blueyonder.co.uk
wrote in message ...
Hello Everyone,

[This is not strictly an Excel problem (sorry) but i only really use VBA
in Excel and i couldn't find a better newsgroup... and people here seem to
know everything! I posted this a while ago and got no response, so i'm
just giving it one last try before giving up]

i have a collection of unsorted photos in a directory which i want to
order into directories / sub-directories based on their date. eg, if the
date a picture (tim.jpg) is taken (i think this is from 'exif' data?) is
1st september 2008, the directory structure would become: -

..\2008\2008_09\2008_09_01\tim.jpg

i would want to loop through each .jpg and create the relevant
dirs\sub-dirs where required. the icing on the cake would be to move the
photos to the correct sub-dir afterward!

i don't really know where to begin with it, so some pointers would be
really appreciated (or if someone knows of cheap/free software that will
do this without spending time on VBA that would be great... i've searched
so far unsuccessfully)

Thanks for any help,

Tim







All times are GMT +1. The time now is 08:10 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com