【问题标题】:How do I allow databases to run activex content when opened with VBA?使用 VBA 打开时,如何允许数据库运行 activex 内容?
【发布时间】:2015-12-25 15:48:35
【问题描述】:

在 Access 2013(64 位)中,当用户单击 db1 中表单上的按钮时,我正在打开另一个数据库 (db2)。这是有效的。但是,当它打开 db2 时,我收到警告栏“安全警告:某些活动内容已被禁用。单击以获取更多详细信息”,并带有一个启用内容的按钮。这很烦人,当我从 db1 打开数据库并打开表单时,当我单击按钮启用内容时,所有当前打开的表单都关闭了。

两个数据库都在同一个目录中,我已将此目录添加到受信任的位置。我还需要做些什么来禁用此警告栏而不自动信任所有数据库(我不想这样做)吗?

当我手动打开每个数据库时,我没有看到警告栏出现,所以我认为这与我正在使用的 VBA 代码有关:

Dim db2 As Variant
Set db2 = CreateObject("Access.Application")
db2.OpenCurrentDatabase "NewDb.accdb"    
db2.DoCmd.OpenForm "_View"
db2.DoCmd.OpenForm "_Home"
db2.UserControl = True

【问题讨论】:

  • 你觉得这个变化有什么不同吗? db2.OpenCurrentDatabase CurrentProject.Path & "\NewDb.accdb"
  • 哇,是的,我愿意!把它写成答案,我会接受!

标签: security ms-access vba ms-access-2013 trust


【解决方案1】:

当您调用OpenCurrentDatabase 时,请包含到NewDb.accdb 的完整路径。我认为您想要与第一个数据库 (db1) 相同的文件夹。 CurrentProject.Path 将为您提供该文件夹的完整路径...

db2.OpenCurrentDatabase CurrentProject.Path & "\NewDb.accdb"

【讨论】:

  • 重要的一点是,通过指定完整路径,它可以防止显示禁用“活动”内容(宏、vba 代码等)的安全警告。
  • 我猜错了吗?我假设在没有指定文件夹的情况下,您正在从另一个文件夹中打开 NewDb.accdb 的副本……该文件夹未设置为受信任的文件夹。
  • 它打开了正确的数据库(与当前数据库在同一目录中),但由于某种原因,指定完整路径会阻止安全警告。正确的答案,错误的理由;)
  • 好的,我现在明白了。我以前从未注意到这一点。我更新了答案以放弃基于我错误猜测的解释。
  • 也许这是 Access 2013 中的一个错误,因为我真的看不出有任何差异的原因。
猜你喜欢
  • 1970-01-01
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多