启用不安全内容后 MS Access 表单被破坏
MS Access form gets broken after enabling unsafe content
我有一个 MS Access 项目,它是在 MS Access 97 中开发的。我成功地将它转换为 MS Access 2016(这是一个很长的故事)。一切看起来都很好,但我注意到一个非常奇怪的行为。
当用户第一次在客户端模式下打开项目文件时,会弹出很多宏错误。这是正常的事情,因为用户尚未允许此文件中的不安全内容。因此,在用户关闭所有错误后,他按下 "Allow unsafe content" 按钮并关闭文件。现在用户再次打开该项目,但它无法正常工作。调用了一些不应调用的表单,并弹出 "Module not found" 错误。我没有为这个程序开发任何模块。因此,这意味着如果用户打开文件而不首先允许不安全的内容,项目将完全混乱,除非您用新副本替换文件,否则无法恢复。
但是,如果用户拥有项目 .accdb 文件的全新副本,并且该文件位于受信任的位置,则一切正常。另一种正确制作项目 运行 而不将其放入受信任位置的方法是在先按住 shift 键并按下 "Allow unsafe content" 按钮的同时打开它。然后用户可以正常 运行 双击文件,它会正常工作。
因此,在不允许不安全内容的情况下打开此文件首先会破坏项目。我还尝试打开表单的 VBA 代码,该代码默认调用,VBA 代码 windows 看起来已冻结。其他形式工作正常。
如何调试这个问题?
UPD: 看起来问题确实是由于在未启用不安全内容的情况下尝试 运行 宏引起的。
UPD: 我注意到一件事 - 如果我 运行 项目没有首先允许不安全的内容,但我没有按 "allow content",然后关闭程序 - 我仍然可以从受信任的位置 运行 它。所以损坏只有在我按下 "enable content" 按钮后才会发生。我的表单有带有 OnClose 操作的宏。但是我试图从此表单中删除所有宏,但没有帮助。
我 运行 遇到了一些更奇怪的问题,在调试它们时发现系统上有一些 MS Office 2000 足迹。我决定卸载 MS Office,清理 Windows 注册表并重新安装 MS Office。这解决了我所有的问题。
我有一个 MS Access 项目,它是在 MS Access 97 中开发的。我成功地将它转换为 MS Access 2016(这是一个很长的故事)。一切看起来都很好,但我注意到一个非常奇怪的行为。
当用户第一次在客户端模式下打开项目文件时,会弹出很多宏错误。这是正常的事情,因为用户尚未允许此文件中的不安全内容。因此,在用户关闭所有错误后,他按下 "Allow unsafe content" 按钮并关闭文件。现在用户再次打开该项目,但它无法正常工作。调用了一些不应调用的表单,并弹出 "Module not found" 错误。我没有为这个程序开发任何模块。因此,这意味着如果用户打开文件而不首先允许不安全的内容,项目将完全混乱,除非您用新副本替换文件,否则无法恢复。
但是,如果用户拥有项目 .accdb 文件的全新副本,并且该文件位于受信任的位置,则一切正常。另一种正确制作项目 运行 而不将其放入受信任位置的方法是在先按住 shift 键并按下 "Allow unsafe content" 按钮的同时打开它。然后用户可以正常 运行 双击文件,它会正常工作。
因此,在不允许不安全内容的情况下打开此文件首先会破坏项目。我还尝试打开表单的 VBA 代码,该代码默认调用,VBA 代码 windows 看起来已冻结。其他形式工作正常。
如何调试这个问题?
UPD: 看起来问题确实是由于在未启用不安全内容的情况下尝试 运行 宏引起的。
UPD: 我注意到一件事 - 如果我 运行 项目没有首先允许不安全的内容,但我没有按 "allow content",然后关闭程序 - 我仍然可以从受信任的位置 运行 它。所以损坏只有在我按下 "enable content" 按钮后才会发生。我的表单有带有 OnClose 操作的宏。但是我试图从此表单中删除所有宏,但没有帮助。
我 运行 遇到了一些更奇怪的问题,在调试它们时发现系统上有一些 MS Office 2000 足迹。我决定卸载 MS Office,清理 Windows 注册表并重新安装 MS Office。这解决了我所有的问题。