以下摘自 Microsoft Access 2003 Help
关于保护 Access 数据库中的 Visual Basic for Applications 代码 (MDB)
注释 本主题中的信息仅适用于 Microsoft Access 数据库 (.mdb)。
可以通过使用密码或是将数据库保存为 MDE 文件来帮助保护 Microsoft Visual Basic for Applications (VBA) 代码。密码只有助于保护代码,而将数据库保存为 MDE 文件可保护窗体、报表和 Visual Basic 代码。用户级安全机制不保护代码,但有助于保护引用代码的窗体和报表。
使用密码保护 Visual Basic for Applications (VBA) 代码
在 Microsoft Access 项目 (.adp) 文件和 Microsoft Access 数据库 (.mdb) 文件中,可通过使用密码(您和其他用户必须输入该密码才能查看或编辑“Visual Basic 编辑器”中的 VBA 代码)保护 VBA 代码,从而帮助保护所有标准模块和类模块(如窗体和报表后面的模块)。只要设置了密码,则每次会话都需输入一次密码。不仅查看和编辑需要密码,剪切、复制、粘贴、导出和删除任何模块也需要密码。但请注意,以这种方式对 VBA 代码采取安全措施并不能阻止您或其他用户运行已有的 VBA 代码。
将数据库保存为 MDE 文件
将 Microsoft Access 数据库保存为 MDE 文件时,将会编译所有模块,删除所有可编辑的源代码,并压缩目标数据库。Visual Basic 代码将继续运行,但不能对其查看或编辑。Access 数据库将继续正常运行,即仍可以更新数据和运行报表,但数据库的大小将由于代码的删除而减小。内存的使用得到优化,而性能也得以提高。
将 Access 数据库保存为 MDE 文件可防止以下操作:
- 在“设计”视图中查看、修改或创建窗体、报表或模块。
- 添加、删除或更改对对象库或数据库的引用。
- 利用 Microsoft Access 或 VBA 对象模型的属性或方法更改代码,因为 MDE 文件不包含源代码。
- 导入或导出窗体、报表或模块。但是,表、查询、数据访问页和宏可以在非 MDE 数据库中进行导入或导出。
模块和用户级安全机制
在 Microsoft Access 2000 或更高版本的数据库中,标准模块和类模块(如窗体和报表后面的代码)不再部署用户级安全机制(而以前的版本中它们采用用户级安全机制)。但是,窗体和报表仍利用用户级安全机制。这意味着模块、窗体和报表采用不同的安全机制。
例如,假设有适当的权限,可以向窗体中添加控件,但是如果 VBA 工程的查看权限被锁定并且该工程已被密码保护,而您不知道密码,您就无法查看或编辑窗体后面的模块。相反,通过用户级安全机制,不赋予您对对象的“修改设计”权限,即可限制您对窗体或报表的设计,但是,如果您知道 VBA 工程的密码,则仍可访问窗体和报表后面的模块。
对此也有例外。即使对窗体或报表拥有了“修改设计”的权限,也不能删除窗体或报表,而且不能将“内含模块”属性值设置为“否”,因为该操作会删除窗体和报表后面的模块。