Mi vengono in mente solo due possibilità:

1) è in uso da altri programmi che non sono Visual Studio (magari l'hai prima aperto in Access e poi non lo hai chiuso prima di cancellarlo, oppure chiudendolo è rimasto qualcosa di aperto, in tal caso è un problema di Access, non so se da codice si può fare qualcosa)

2) ad un certo punto della tua logica di programmazione il db contenuto in cn differisce dal db selezionato e contraddistinto dalla variabile annoSelezionato

Una considerazione:
Non credo sia necessario il loop until per chiudere la connessione, penso sia sufficiente un if, anche perché credo che, in caso fallisse il comando, genererebbe un'eccezione