Esto que va a continuación lo deberías poner en la MDB actual, con la que normalmente opera tu usuario. Supongamos que se llama Programa.mdb En un formulario cualquiera, por ejemplo en el formulario: «FormularioTesta» corres este codigo, de boton de comando «TesteaversionNueva» '************************************************************** Option Compare Database Option Explicit Declare Function EjecutaBase Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hWnd As Long, ByVal lpOperation As String, _ ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub TestaVesionNueva_Click() On Error GoTo TestaVesionNueva_Click_Err If Len(Dir(CurrentProject.Path & "\nuevaversion.mdb")) <> 0 Then If MsgBox( _ "Atención hay una nueva versión del programa.¿Desea operar con ella?", vbYesNo, "AVISO") = vbYes Then EjecutaBase Me.hWnd, "open", CurrentProject.Path & "\copia.mdb", _ "", "", 1 DoCmd.Quit End If End If TestaVesionNueva_Click_Exit: Exit Sub TestaVesionNueva_Click_Err: MsgBox "Error nº " & Err.Number & vbCrLf & Err.Description & vbCrLf & _ "en procedimiento TestaVesionNueva_Click de Documento VBA Form_FormularioTesta", vbCritical, "Aviso de error" Resume TestaVesionNueva_Click_Exit End Sub '*********************************************************************** Si un usuario entra en el formulario, da en el boton de comando y existe una nueva version del programa (Lo que yo he llamado nuevaversion.mdb) el programa le invita a coger dicha versión. Si escoge que sí, lo que hace es abrir una base MDB, vamos a llamar de apoyo, que será la encargada de realizar la transformacion de nuevaversion.mdb a programa.mdb Si te das cuenta, primero abro nuevaversion.mdb mediante una sencilla API a la vez que cierro fisicamente la Programa.mdb, que es la base actual que corre el codigo. Una vez hecho esto, la estructura de «Copia.mdb» es bien sencilla. Creas un formulario de Inicio que será con el que se abra la mdb COPIA.MDB, donde el codigo será bien simple: '********************************************************************************* Option Compare Database Option Explicit Declare Function EjecutaBase Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hWnd As Long, ByVal lpOperation As String, _ ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub Form_Load() MsgBox "Atención: Se va a proceder a actualizar versiones", vbExclamation, "AVISO" 'borro la mdb Programa.Mdb que acabo de cerrar Kill CurrentProject.Path & "\programa.mdb" 'renombramos Name CurrentProject.Path & "\nuevaversion.mdb" As CurrentProject.Path & "\programa.mdb" DoEvents 'hacemos el proceso inverso EjecutaBase Me.hWnd, "open", CurrentProject.Path & "\programa.mdb", _ "", "", 1 DoCmd.Quit End Sub Este procedimiento anterior esta claro. Si todo va bien y no he metido la pata en algo, el usuario volverá a tener cargada de nuevo Programa.Mdb en su nueva version.