每次我打开*.mdb
或*.accdb
文件时,都会出现黄色的消息栏,其中包含西班牙语文本,翻译如下:
安全警告:部分活动内容已被禁用。点击查看更多详细信息。
... 以及一个标有“启用内容”的按钮。这是我找到的英文版的屏幕截图:
该按钮使栏消失,似乎记住了我对当前文件的决定。“更多详细信息”链接打开“文件->信息”面板,我可以在面板中看到“VBA 宏“被禁用。
问题是我没有收到针对特定文件的警告:我是从全部文件,包括那些显然根本没有宏的宏(“数据库工具-> Visual Basic”窗口不显示任何代码)。即使我转到“文件->新建”并创建一个空白数据库,打开它时也会弹出警告。
我的问题:
无论文件内容如何,警告是否都应该始终出现?
如果没有,我可以在哪里找到 Access 报告的 VBA 宏?
答案1
解决此问题的另一种方法是为您的项目创建一个受信任位置。您可以使用注册表项将您的文件夹设为受信任位置。一旦您知道要设置哪个键,这实际上比听起来更容易。
每个版本的 MS Access 的注册表项略有不同,但以下是 MS Access 2010 的示例注册表项:
[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\Security\Trusted Locations\Location20] “路径”=“C:\Database\” “说明”=“我的数据库位置”
如果您将上述引文复制并粘贴到文本文件中,并使用诸如 RemoveSecurityWarning.reg 之类的名称保存它,那么您只需双击该文件即可将该文件运行(合并)到您的计算机注册表中。
现在让我们解释一下此键的一些功能:
- 号码“14.0”是 MS Office 的版本。您可以简单地将其更改为代表您正在运行的版本的数字。
- 这“位置 20”是我们指定的唯一名称。20 可以是任何尚未使用的数字。其他程序(包括默认的 MS Access 向导)可能已经使用了其他数字。或者,如果您想将多个路径设为受信任位置,则每个位置必须以不同的数字结尾。
- 这 “C:\数据库\” 实际上是您要设置为受信任位置的物理路径。您可以在此处输入您选择的任何路径。我不确定它为什么使用双 \,但我只是复制了先前设置密钥的示例,这似乎效果最好。
- 不需要描述,但显然可以使用任何描述。
欲了解更多详情,请阅读本文:http://blog.ideaz.net/2013/12/how-to-remove-microsoft-access-security.html
答案2
Access 2010 会自动防范所有宏,除非您另行通知。它还会禁用不信任的文件内容。您必须通过信任中心告诉它要信任哪些文件。
在 Access 2010 中,信任中心控制哪些内容被允许以及可以通过File > Options > Trust Center > Trust Center Settings
按钮访问。
在信任中心内,您可以更改宏设置并将文件和位置添加到信任设置。
答案3
http://office.microsoft.com/en-us/excel-help/active-content-types-in-your-files-HA010354381.aspx描述如何找出答案:
要查看被阻止的活动内容类型的列表,请转到信任中心对话框。
该页面上列出了可能适用的内容类型。
答案4
另一种方法是对特定产品位置执行注册表更改,此操作将对所有 Access 数据库以及 Excel 或 Word 执行。有一个称为 VBAWarnings 的值,默认情况下将其设置为 2,当您将其更改为 1 时,黄色丝带将不会显示。
如果您使用 C#,请使用以下代码:
using Microsoft.Win32; // for required for registry reading/writing
// Opening the Registry Key
RegistryKey rk = Registry.CurrentUser;
// Open the corresponding Subkey
// I have to use CreateSubKey
// (create or open it if already exists),
// 'cause OpenSubKey open a subKey as read-only
RegistryKey sk1 = rk.CreateSubKey("Software\\Microsoft\\OFFICE\\14.0\\Access\\Security");
// Save the value to change Macro Settings in Security Warning
//sk1.SetValue("VBAWarnings, 4); //Disable all macros without notification
//sk1.SetValue("VBAWarnings, 3); //Disable all macros except digitally signed macros
//sk1.SetValue("VBAWarnings, 2); //Disable all macros with notification - Default Office Setting
sk1.SetValue("VBAWarnings", 1); // Enable all macros
此代码严格且直接适用于 Access 2010,但可以将其更改为循环遍历注册表(包括产品)。基本上,您必须按版本循环,请注意,其中显示 14.0,它可以是任何其他产品版本。如果没有记错的话,14.0 适用于 Office 2010,12.0 适用于 Office 2007,等等;并且其中显示 Access 可以更改为适用于 Excel 和 Word。