[FONT=Courier New][SIZE=1]Option Explicit[/SIZE][/FONT]
[FONT=Courier New][SIZE=1][/SIZE][/FONT]
[FONT=Courier New][SIZE=1]Public Sub DetectNewFiles()
Const sFolder As String = "[COLOR=red][B]C:\Temp\[/B][/COLOR]" [COLOR=green] ' folder to watch
[/COLOR] Const sFileSpec As String = "[COLOR=red][B]*.txt[/B][/COLOR]" [COLOR=green]' type of file to watch
[/COLOR] Const sAgeSelect As String = "[B][COLOR=magenta]00:00:30[/COLOR][/B]" [COLOR=green]' ignore files newer than this
[/COLOR]
Dim sFileName As String
Dim dFileStamp As Date
Dim iFiles As Integer
Dim iNewFiles As Integer
Dim dLastFileProcessed As Date
Dim dLatestFileDetected As Date
dLastFileProcessed = ThisWorkbook.Sheets("[COLOR=blue][B]Hidden[/B][/COLOR]").Range("A1")
sFileName = Dir(sFolder & sFileSpec)
Do While sFileName <> ""
dFileStamp = FileDateTime(sFolder & sFileName)
If dFileStamp > dLastFileProcessed And dFileStamp < Now() - TimeValue(sAgeSelect) Then
iNewFiles = iNewFiles + 1
[/SIZE][/FONT][FONT=Courier New][SIZE=1][COLOR=green] '
' this is the point at which a new file has been detected: insert
' some coding here to process it as required
'
' during testing we'll just display the file name on screen[/COLOR][/SIZE][/FONT]
[FONT=Courier New][SIZE=1][COLOR=green] '
[/COLOR] MsgBox "New file: " & sFileName & " (" & Format(dFileStamp, "dd/mm/yyyy hh:nn:ss") _
& ")" & Space(10), vbOKOnly + vbInformation[/SIZE][/FONT]
[FONT=Courier New][SIZE=1] [COLOR=green] '[/COLOR][/SIZE][/FONT]
[FONT=Courier New][SIZE=1][COLOR=green] ' maybe you want to delete the file after processing it?[/COLOR][/SIZE][/FONT]
[COLOR=green][FONT=Courier New][SIZE=1] ' Kill sFolder & sFileSpec
[/SIZE][/FONT][FONT=Courier New][SIZE=1] '[/SIZE][/FONT][/COLOR]
[FONT=Courier New][SIZE=1][COLOR=green] ' end of coding to process new file[/COLOR][/SIZE][/FONT]
[FONT=Courier New][SIZE=1][COLOR=green] '
[/COLOR] If dFileStamp > dLatestFileDetected Then dLatestFileDetected = dFileStamp
End If
iFiles = iFiles + 1
sFileName = Dir()
Loop
[/SIZE][/FONT][FONT=Courier New][SIZE=1][COLOR=green] ' if we found any new files, store the latest date/time stamp back in the hidden worksheet
[/COLOR] If iNewFiles > 0 Then ThisWorkbook.Sheets("[B][COLOR=blue]Hidden[/COLOR][/B]").Range("A1") = dLatestFileDetected
MsgBox "Done: " & CStr(iNewFiles) & " new file" & IIf(iNewFiles = 1, "", "s") & " found" _
& Space(10) & vbCrLf & vbCrLf, vbOKOnly + vbInformation
End Sub[/SIZE][/FONT]