我使用VBA开发了一个Access应用程序。每次我打开Access,我都会得到以下信息:
我必须点击选项 - > 启用内容以运行我的宏。这个应用程序将由几个不太懂技术的人共享。因此,根据要求,我必须删除它。我已经尝试过签名/打包数据库,但它仍然没有消除警告。
答案 0 :(得分:11)
为此,您必须在“受信任的位置”中添加启动Excel的位置。
要执行此操作,请执行以下操作:
这必须在每台电脑上完成。
此外,从Excel文件的角度来看,无法做到这一点,因为这会完全避免让用户选择运行VBA代码的安全功能。
还有一点注意事项,如果您在Excel文件上签名,您仍然需要收件人信任您作为发布者,这就是您的解决方案可能无法正常工作的原因。
编辑:
考虑到评论,似乎有一种方法可以通过编程方式进行。取自XpertsExchange,
为什么不在不调用Shell的情况下从代码中设置注册表项?使用此处的cRegistry类:
VBA代码:
Dim c As New cRegistry
With c
.ClassKey = HKEY_CURRENT_USER
.SectionKey = "Software\Microsoft\Office\12.0\Access\Security\Trusted Locations\YourTrustedLocationName"
.ValueKey = "Path"
.ValueType = REG_DWORD
.Value = "Full path to Trusted Folder"
End With
唯一需要注意的是,YourTrustedLocationname必须是唯一的......
你必须尝试它应该是.ValueType = REG_DWORD或REG_SZ。我不确定那个。
答案 1 :(得分:7)
虽然这个问题已有数年之久,但万一它可能有所帮助,这就是我所做的。它与已经提出的方法不同,它可能为其他人提供服务。 就我而言,MsAccess不是由用户直接打开的。相反,MsAccess开始使用另一个自定义应用程序中的自动化。因此,我们让这个自定义应用程序告诉MsAccess启用宏,而不是让用户单击“启用内容”。类似的东西:
cli = create_object("Access.Application")
cli.AutomationSecurity = 1 # 1 = msoAutomationSecurityLow
cli.visible = true
cli.opencurrentdatabase("c:/Users/jmperez/AppData/Local/Temp/DB_TMP.mdb")
(对于上面的代码感到抱歉,它不是来自'标准'或'流行'编程语言,但它应该不难适应Visual Basic或其他任何东西)
答案 2 :(得分:3)
这是每用户选项。每个人都需要“信任”您的工作簿。
在Excel中,点击“菜单”按钮,然后选择“Excel选项”。在该窗口中,选择信任中心,然后选择信任中心设置。在该窗口中,选择“受信任位置”。
在该屏幕上,您可能需要选中“在我的网络上允许受信任位置”,然后单击“添加位置”并添加工作簿的网络位置。
答案 3 :(得分:2)
让您的宏由受信任的机构签名。
答案 4 :(得分:0)
我所做的是使用visual studio 2010创建一个安装项目(在安装和部署项目下)。在此项目中,您配置为将MS Access应用程序安装/复制到“C:\ Ntapps \ MsOffice \ Office12 \ ACCWIZ \”。这是受信任数据库的文件夹。然后创建MS Access应用程序的快捷方式,并将其安装在所需位置。
当一切正常并且安装完成后,MS Access(默认配置)现在信任该数据库。
祝你好运;)
Grtz,汤姆