Tengo una base de datos en ACCESS y me gustaría deshabilitar la ventana base de datos para que no se pueda modificar. Me han dicho que se puede hacer con una macro, pero no sé cuál es el proceso. Mi nivel de VBA es limitado.
Existen muchísimas formas de proteger una base de datos, pero casi todas ellas incluyen varios métodos a la vez. Personalmente te diré que en las mías uso una combinación de recursos, como por ejemplo las opciones que hallarás pulsando en Herramientas y luego en Inicio. Se abre así un cuadro de diálogo en el que desmarcando la opción "Presentar ventana de base de datos", ésta no se verá al iniciar la aplicación. Además puedes impedir que se vean los objetos de tu BD, si pulsando en Herramietnas y luego en Opciones, desmarcas la casilla "Objetos ocultos". Pero todo esto no impide que pueda hacederse a la ventana de base de datos (solo habría que hacer lo contrario a lo que he dicho), por eso además debe integrarse un Módulo, mediante el cual se impida acceder a ella. Este modulo es el siguiente: Option Compare Database Sub SetBypassProperty() Const DB_Boolean As Long = 1 ChangeProperty "AllowBypassKey", DB_Boolean, True End Sub Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer Dim dbs As Object, prp As Variant Const conPropNotFoundError = 3270 ' Set dbs = CurrentDb On Error GoTo Change_Err dbs.Properties(strPropName) = varPropValue ChangeProperty = True Change_Bye: Exit Function Change_Err: If Err = conPropNotFoundError Then 'No se encontró la propiedad. Set prp = dbs.CreateProperty(strPropName, _ varPropType, varPropValue) dbs.Properties.Append prp Resume Next Else ' Error desconocido. ChangeProperty = False Resume Change_Bye End If End Function El cual debe ejecutarse (desde la misma venta de Visual basic) a True (resaltado en el código, en negrita) para que pueda verse la ventana de base de datos, o cambiándolo a False, en caso de que deseemos que no se pueda acceder a ella.
Gracias por tu ayuda. Lo de deshabilitar la ventana base de datos y los de los objetos ocultos ya lo sabía. Hasta ahora lo hacía así, pero abriendo la bd con un formulario... al pulsar el shift se anula la apertura del formulario y entonces deja visible el icono de OFFICE para poder modificarla como tu dices. Para finalizar... ¿En qué propiedad de qué formulario inserto el código VB?
Exactamente. Pues este código impide precisamente eso, que al utilizar el Shift, se muestre la ventana de BD. Debes guardar el código en un Módulo y ejecutarlo desde la ventana de Visual Basic (a True o a False, dependiendo de si deseas mostrar la ventana de BD o no). Verás el resultado la próxima vez que abras la BD, en ambos casos Antes de ejecutar el código, te recomiendo que hagas una copia de seguridad de la BD (todas las precauciones son pocas)
Pero si esta BD se abre en otro PC que no tiene el código de VB modificado, ¿la BD quedará otra vez desprotegida?
Vamos a ver. El módulo está en la BD, por tanto, una vez que lo ejecutes a False, da igual donde la abras. Solo cabe la posibilidad de abrir el código Visual Basic para ejecutar a True el Módulo, pero me imagino que también el acceso al proyecto de Visual Basic lo tendrías protegido, con lo cual solo tú podrías acceder a realizar esos cambios.
Lo he probado pero sigue apareciendo el icono de office.
Supongo que lo que ACCESS hace es ejecutar el módulo, pero el icono de OFFICE sigue saliendo. No deshabilita la ventana base de datos
Espera, Espera, a lo mejor no te he entendido bien... El Módulo deshabilita la ventana de la base de datos, para que no se pueda acceder a los objetos de la BD, pero no la ventana de Access. La ventana de Access si que queda abierta.
Pero si la ventana de ACCESS queda abierta... La BD se puede modificar...
Si la ventana de ACCESS queda abierta, la BD se puede modificar haciendo click en el icono de OFFICE y modificando las opciones de ACCESS.
Aunque la ventana de Access queda abierta, en el´comando "Herramientas" no estarán disponibles las selección de "Inicio" ni "Opciones". Por tanto no se puede modificar nada Una vez que hayas ejecutado el módulo a False, ya no será posible modificar nada en esa BD. De todas formas, compruébalo tu mismo.
- Anónimoahora mismo
Respuesta de teroles
1
1
teroles, Me dedico a la programación desde hace más de 15 años
No conozco la version 2007, de todas maneras, si quieres explicar con más claridad lo que quieres te buscaré alguna solución, si puedo
Lo que hago hasta ahora es que se abra un formulario al abrir la base de datos, pero este método no funciona por que pulsando la tecla shift, se anula la apertura del formulario y se puede acceder a las opciones de ACCESS. Lo que quiero hacer es que nadie pueda acceder a las tablas, formularios, consultas... de forma que no aparezca la ventana base de datos ni el símbolo de OFFICE. Gracias
Pues lo único que se me ocurre es que generes un archivo MDE. Lo que hace esto es compilar y ocultar la información de desarrollo, y no se tiene acceso al diseño, sólo a la ejecución guarda el original, creo que no se puede descompilar igualmente, en la web de M$ hay una utilidad que puedes instalar en tus clientes para que puedan abrir tu BBDD pero sin llegar a poder modificarla, más o menos es como el Acrobat Reader con los archivos PDF, puede visualizarlos, si quien lo ha hecho quiere que entres datos, puedes hacerlo, pero no puedes cambiar ni la estructura ni el comportamiento del documento saludos
Yo desde vba no lo conozco, pero desde el propio access, puedes eliminar todos los botones y acceso a tablas y demás. Esto es desde: Inicio>opciones de access>base de datos actual y ahí tienes 2 opciones EXPLORACIÓN OPCIONES DE BARRAS DE HERRAMIENTAS Y DE LA CINTA OPCIONES Jugando con estas 2 opciones podrás conseguir que no aparezcan botones ni nada, eso si la ventana de access si que te va a aparecer.
Gracias por tu interés. Lo que quiero hacer es que no me aparezca la ventana de access, por que si la ventana está visible se puede modificar todo. Un saludo