One way you could do it, although probably not the ideal way is to have a form open in the background of your database that has the current time on it - you can get this to refresh as often as you like (every second/minute/hour,etc - the more often, the more it impacts performance)
Using the on current event of this form, you could get it to perform certain tasks if time on form reaches the specified time you want macro to run.
Another way, would be to make your macro an auto exec macro (by naming as 'AutoExec'). This macro is then run as soon as database is opened - you could then get windows scheduler to open database at specified time. the macro could then shut the database down if required