mira algo que a mi me ha servido para confundir a los usuarios, lo que hago es: si tego la BD en Acces re-nombro la extensión de MDB a DLL y con el mismo codigo de conexion fuinciona bien, aqui te dejo un ejemplo:
Dim dbInventario As Database
Dim rsUsuarios As Recordset
Set dbInventario = OpenDatabase(App.Path & "\system.dll") 'esta es la BD con la extensión cambiada
Set rsUsuarios = dbInventario.OpenRecordset("Usuarios", dbOpenDynaset) 'abrir las tablas
Set rsUsuarios = dbInventario.OpenRecordset _
("Select * FROM Usuarios " _
& "WHERE Usuario = '" & Text1.Text & "'")
If Not rsUsuarios.EOF Then
If rsUsuarios.Fields("Password") = txtPassword.Text Then
Session = rsUsuarios.Fields("Tipo")
Nombre = rsUsuarios.Fields("Nombre")
If Session = "Administrador" Then
Form1.Show
Unload Me
Else
Form8.Show
Unload Me
End If
Else
MsgBox "El Password es invalido, vuelva a intentarlo!", , "Login"
txtPassword.SetFocus
SendKeys "{Home}+{End}"
End If
Else
MsgBox "El Nombre de usuario es invalido, vuelva a intentarlo!", , "Login"
Text1.SetFocus
SendKeys "{Home}+{End}"
End If