Pour débugguer, il faudrait commencer par voir les messages d'erreur éventuels, et donc mettre en commentaire la ligne "On Error Resume Next"
La seule erreur que je vois est l'absence d'un tb.Close, mais cela ne devrait pas être gênant.
La déclaration des données n'est pas forcément un avantage en VBA, car selon les versions, les déclarations peuvent changer. Je préfère laisser VBA choisir lui-même les bons types de données et ne déclarer que les tableaux.
L'option "dbOpenSnapShot" n'est pas obligatoire. Personnellement, j'appelle OpenRecordSet avec seulement le texte de la requête.
La fermeture de la base par mabase.Close ferme la base, ce qui est rarement souhaité avant la fin de l'application.