I'm with dfenton on this.
You could use a Windows Scheduler Task to copy a file at a given time and then trigger a command-line activation of Access. Look up the command line options, in particular -X as an option. Don't forget that the macro you need to do a RunCode action needs to end with a Quit action.
I'd recommend that you actually do this comparison in a third database that opens the other two databases using the FileSystem object to identify the files and get their dates. The date of database file creation would tell you the cutoff date for changes in the two databases.
With a little bit of VBA code, you can open more than one database in the workspace. Then you have to start worrying about qualifying them so that you know which collection you are stomping through when you stomp. Which means lots of prefixed variables.
It would be easily possible to generate a couple of loops to step through the Tabledefs collection to identify a table. Then for each such table, visiting that table in PK order, step through the Tabledefs(m).Fields
for each record to do a comparison.
You'll find three cases:
1. Same record keys but something is different in a non-PK field. So you just compare them and call out the differences.
2. A record in the old table doesn't exist in the new (current) table - meaning a deletion has occurred.
3. A record in the new table doesn't exist in the old table - meaning an insertion has occurred.
To make this reliable and keep things apples to apples, you need to have a PK, even if synthetic, for every table.
There is also the odd chance that you can find a table in one of the copies that isn't in the other copy, also a loggable event but of a different type.
This is a perfect situation to implement nested For Each... Next loops in a structure like...
For Each tNewTable in newdb.Tabledefs
{look for the corresponding table in the olddb.Tabledefs collection}
{open a table-type recordset to the current new table}
Code up a loop for each record in the new recordset. If you find a case where stepping forward with the old and new recordsets brings up different PKs, you have found a new record or a deleted record, depending on which recordset has the higher number. If the new recordset is lower, you probably have meaningful keys AND a record was inserted. If the old recordset is lower, you have identified a deleted record (that isn't in the new recordset). If they have the same PKs, then for each field in the Fields collection, compare the fields to identify the differences. At the end of the collection, if you have found no differences, then those records are the same.
At the end of each table you will have found zero or more changes, new records, or deletions. Step to the next new table.
At the end of the stepping through the new tabledefs, step through the old one only to verify that no table was deleted.
Just some random thoughts about how I might approach the problem. Look it over, ask questions. Don't presume that I am 100% right. These days I'm feeling very normal in the "making mistakes" department.