Ciao, anche io ho avuto lo stesso identico problema e l'ho risolto così:
il mio programma doveva partire ogni 2 ore, ma se qualcuno apriva il file in Access non riuscivo. Tuttavia quando qualcuno apre un file Access, automaticamente viene creato un file nella stessa cartella con estensione "ldb". Quindi quando il mio programma partiva, controllava come prima cosa se esisteva questo LDB; se c'era partiva un loop col DoEvents che si fermava solo quando non trovava più questo file (ovvero quando il file mdb veniva chiuso); quindi potevo fare la copia.