300 dbs? ...ouch. this is the problem. it will force you to build a real kludge...
append the records of all the dbs (identical table) into a single table. add a new field to the table and be sure to append the differentiating name i.e. folder2 ...so you know will always know where each record came from.
then as you create new dbs - which I presume you are condemn to be doing - just append that data to your consolidated db as you go.....
The following procedure receives the name of an Access database and execute a query that imports the contents of a table in this external database named "Tbl_Modules" into a table with the same name ("Tbl_Modules") in the current database:
Sub ExecQuery(ByVal DatabaseName As String)
Const c_SQL As String = "INSERT INTO Tbl_Modules ( Module_Name, Module_Description, Granted, Disabled ) " & _
"SELECT Module_Name, Module_Description, Granted, Disabled " & _
"FROM Tbl_Modules IN '@DB';"
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Set dbs = CurrentDb
Set qdf = dbs.CreateQueryDef("")
.SQL = Replace(c_SQL, "@Db", DatabaseName)
Set qdf = Nothing
If you know how to retrieve the name of the external Access databases in a loop, you can call this function for each found name. You just need to modify the c_SQL constant that contains the SQL statement of the query.