LogParser is called the Swiss Army Knife for data processing in the Microsoft arsenal and it is totally free.

http://www.microsoft.com/downloads/d...displaylang=en

By recognizing various file formats for input<>output, LP transforms data from one to the other via standard SQL. I have placed a simple module below which will recuse an entire C: drive for .ppt files and place them in an Access Table with full path, file size and creation date in descending order. You will need [of course] Logparser installed, a blank .mdb file named lp.mdb in the same directory as an Excel file you create then paste in the code. (when you run it it might take some time depending upon the size of your hard drive)

Perhaps it doesn't appear that interesting, but I challenge anyone to post an equal amount of code that performs the same task. With a few tweaks you could parametize the module, allow for creation of mdb, clearing of tables and have yourself a fairly generic routine to gather file information into Access tables. .02 Stan

[vba]
Function FileExists(FullFileName As String) As Boolean
' returns TRUE if the file exists
FileExists = Len(Dir(FullFileName)) > 0
End Function

Sub LP_CreateTable()
Dim oLog, oInput, oOutput, cMDB As String, cTable As String, cSQL As String
cTable = "pptfiles" 'set to hold rows for powerpoint files, you can change this
'to excelfiles, or txtfiles, just change the extension in the
'cSQL string [below]
cMDB = ThisWorkbook.Path & "\lp.mdb"
If Not FileExists(cMDB) Then
MsgBox cMDB & " doesn't exist!"
Exit Sub
End If
cSQL = "SELECT Path, Size, CreationTime INTO " & cTable & " FROM C:\*.ppt ORDER BY CreationTime DESC"
Set oLog = CreateObject("MSUtil.LogQuery")
Set oInput = CreateObject("MSUtil.LogQuery.FileSystemInputFormat")
oInput.recurse = -1 'total recursion to all subdirectories
Set oOutput = CreateObject("MSUtil.LogQuery.SQLOutputFormat.1")
oOutput.oConnString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & cMDB
oOutput.createTable = 1 'this assumes blank MDB exists but table doesn't
'if you were to write code and knew the table existed
'but wanted to clear it then oOutput.clearTable = 1
oLog.ExecuteBatch cSQL, oInput, oOutput
Set oInput = Nothing
Set oOutput = Nothing
Set oLog = Nothing
End Sub

[/vba]