Respuesta de Enrique MArtinez ============================= El problema está en la versión de la biblioteca de Access que tengas referenciada en tu proyecto de Visual Basic. La sintaxis del método «OpenCurrentDatabase» correspondiente a la biblioteca «Microsoft Access 10.0 Object Library» (Access XP), es la siguiente: apliccaccess.OpenCurrentDatabase(ruta, Exclusivo, Contraseña) Desconozco la sintaxis correspondiente a la versión 9.0 de la citada biblioteca (Access 2000), aunque por lo que he leído, no dispone del argumento «Contraseña». Pero sí te puedo confirmar que la sintaxis de la versión 8.0 (Access 97) tampoco dispone del citado parámetro, de ahí que te de el error «Número de argumentos erróneo o asignación de propiedad no válida» cuando utilizas el ejemplo que te envié. > Si tú has probado el código, quizás yo esté haciendo algo > incorrecto. ¿ Podrias ser un poco más explícito ? Creo que está ya explicado: si la versión de la biblioteca «Microsoft Access X Object Library» que utilizas en tu proyecto VB no permite el argumento «Contraseña», no podrás utilizar el método «OpenCurrentDatabase» para abrir una base de datos que esté protegida con una contraseña. No obstante, te recomiendo que expongas tu problema en el grupo de Access (microsoft.public.es.access), por si los compañeros de dicho grupo conocen otra solución. Yo conozco otras soluciones para abrir una base de datos con contraseña mediante DAO y ADO. Si estás interesado, en la siguiente dirección de la Knowledge Base, encontrarás información de como abrir una base de datos Access 2000 protegida mediante DAO. Si entiendes un poco de inglés, en ese mismo artículo explica que el método «OpenCurrentDatabase» no proporciona un parámetro para especificar la contraseña, cosa que si lo hace la versión 10.0 de Microsoft Access Object Library: HOW TO: Open a Password-Protected Database Through Automation in Access 2000 http://support.microsoft.com/default.aspx?scid=kb;en-us;235422 Un saludo. -- Enrique Martínez [MS MVP - VB] ANEXO DE EJMPLO DEL BUHO ======================== Option Explicit Function BuhoAccess2000() 'Esta es la que hacía yo hasta ahora desde Access 2000 Dim db As Database Dim InstanciaAccess As Access.Application Set InstanciaAccess = New Access.Application Set db = InstanciaAccess.DBEngine.OpenDatabase("c:\twpac\datos.mdb", False, False, ";PWD=330086") InstanciaAccess.OpenCurrentDatabase "c:\twpac\datos.mdb" 'si quería ver la MDB fisicamente abierta: InstanciaAccess.Visible = True 'aqui operaría con dicha MDB 'etc etc db.Close Set db = Nothing End Function '---------------------------------------------------------------------- Function AbreBaseDatosProtegidaMicrosoft() 'Sacada de la Web de Microsfot y a la postre es como la anterior mía 'Access 2000 Static AccInstanciaAccess As Access.Application Dim db As DAO.Database Dim Nombrebasedatos As String Nombrebasedatos = "C:\twpac\datos.mdb" Set AccInstanciaAccess = New Access.Application AccInstanciaAccess.Visible = True Set db = AccInstanciaAccess.DBEngine.OpenDatabase(Nombrebasedatos, False, False, ";PWD=330086") AccInstanciaAccess.OpenCurrentDatabase Nombrebasedatos db.Close Set db = Nothing End Function '----------------------------------------- Function AbrirBasedatosXP() 'Access XP Dim Dbs As Database Dim AccInstanciaAccess As Access.Application Set AccInstanciaAccess = New Access.Application AccInstanciaAccess.OpenCurrentDatabase "C:\Twpac\datos.mdb", False, "330086" AccInstanciaAccess.Visible = True Set Dbs = AccInstanciaAccess.CurrentDb 'opero con la MDB End Function