当用户启动具有宏和 vba 的 Access 2007 数据库时,会显示安全警告。我希望用户处理此警告,因此如果未启用内容,则用户应该无法使用数据库。
现在我使用一个名为AutoExec
(打开一个像菜单一样工作的表单)的宏,并且该宏在用户处理安全警告之前运行。但我想检查内容是否已启用,如果没有,我将显示一个表单,通知用户他们应该启用内容。
所以我真正要求的是我该怎么做:
- 如果未启用vba 和宏-> 显示表单“信息”
- 如果启用了 vba 和宏-> 显示表单“开始菜单”
当用户启动具有宏和 vba 的 Access 2007 数据库时,会显示安全警告。我希望用户处理此警告,因此如果未启用内容,则用户应该无法使用数据库。
现在我使用一个名为AutoExec
(打开一个像菜单一样工作的表单)的宏,并且该宏在用户处理安全警告之前运行。但我想检查内容是否已启用,如果没有,我将显示一个表单,通知用户他们应该启用内容。
所以我真正要求的是我该怎么做:
好的,过了一会儿我有了解决方案。感谢您以正确的方式引导我的答案。
Microsoft 的这篇文章非常有帮助。
在 AutoExec 宏中,我有两行:
第一行:Conditions: [CurrentProject].[IsTrusted]=False
然后我选择我想打开的女巫表格,在这种情况下,它是“关于安全警告表格的信息”
第二行:Conditions: [CurrentProject].[IsTrusted]=True
现在打开“开始菜单窗体”
就这样!
如果内容被禁用,那么您将无法检查,因为您的代码无法运行......
您可能想考虑一个启动表格(“信息”)。这将在没有宏的情况下显示。
此外,您可以运行一些启动代码或关闭信息窗体并打开主窗体(“开始菜单”)的宏,如果不允许使用宏,则不会运行。但是,我认为您可能会收到难看的警告。
编辑
将计时器间隔设置为 100 并在信息表单中添加一些代码:
Private Sub Form_Timer()
DoCmd.Close acForm, "Information"
DoCmd.OpenForm "start menu"
End Sub
只是为了添加我的解决方案——我只是在处理这个问题。
默认情况下,在数据库选项中将其设置为以“未启用”表单打开 在此“未启用”表单上,有一些文本、图片或您拥有的内容,让用户知道他/她需要“启用内容”。
在此表单的加载事件中,只需放置一些 VBA 来打开您希望呈现给用户的实际表单并关闭“notEnabled”表单。
这样,如果用户打开数据库时没有使其受信任,启用内容,他们就会被困在告诉他们如何做的表单上。只要它被信任,表单的加载事件就会触发并将用户重定向到您想要的任何表单,并启用内容。
如果用户打开数据库并且已经信任该文件,他们不会看到告诉他们使其信任的表单。
您可以通过在 AutoExec 宏中将 IsTrusted 标志设置为 TRUE 来避免这种情况。请参阅将现有的 Access 应用程序转换为 Access 2007 - 搜索 IsTrusted 以深入了解如何处理它的说明。
我不知道为什么人们会提出尚未经过测试的建议。我的解决方案很简单:
如果:[CurrentProject].[IsTrusted]=False RunMenuCommand: CloseDatabase
别的
如果:[CurrentProject].[IsTrusted]=True RunCode:(您首先在此处运行您想要的代码或宏)
如果出现安全警告,这基本上会关闭数据库。如果他们不是,它打开就好了。作为管理员的用户将需要降低想要访问数据库的计算机上的宏安全级别。与其他宏不同,此宏将实际运行,因为它符合 Access 的要求。
别客气!