Sub ScanFilesToAccess()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim fso As Object
Dim folderPath As String
Dim folder As Object
Dim file As Object
' Prompt user to select folder
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Select Folder to Scan"
If .Show <> -1 Then Exit Sub
folderPath = .SelectedItems(1)
End With
' Initialize FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(folderPath)
' Open Access table
Set db = CurrentDb
Set rs = db.OpenRecordset("FileInventory", dbOpenDynaset)
' Recursive scan
Call ScanFolder(folder, rs)
rs.Close
Set rs = Nothing
Set db = Nothing
Set fso = Nothing
MsgBox "Scan complete!", vbInformation
End Sub
Sub ScanFolder(ByVal folder As Object, ByRef rs As DAO.Recordset)
Dim subFolder As Object
Dim file As Object
'add FileType with SELECT CASE extension?
Dim strFileType As String
Dim strExtension As String
' Loop through files
For Each file In folder.Files
strExtension = Mid(file.Name, InStr(1, file.Name, ".") + 1)
Select Case strExtension
Case "jpeg", "jpg", "img", "mov", "png"
strFileType = "Image"
Case "ACCDB", "MDB", "ACCDE", "MDE"
strFileType = "Access"
' === ADD MORE === or use a small lookup table
Case Else
strFileType = "Other"
End Select
rs.AddNew
rs!FileName = file.Name
rs!folderPath = file.Path
rs!FileSize = file.Size
rs!DateModified = file.DateLastModified
rs!FileType = strFileType
rs.Update
Next file
' Loop through subfolders
For Each subFolder In folder.SubFolders
ScanFolder subFolder, rs
Next subFolder
End Sub