ms-access - 如何摆脱VBA安全警告

标签 ms-access vba warnings

我使用VBA开发了Access应用程序。每次我打开Access时,都会得到以下信息:
https://lh5.googleusercontent.com/wgn5B5PllVXGuG6W4_xiFa1rouSpDSn27MC0nzPkgJ5CPN8BKpAn-gDFsVS4GZtepY-c4jtbEupKeV227ogICQlzcg=s512

我必须单击选项->启用内容来运行我的宏。该应用程序将在不那么精通技术的工作人员中共享。因此,按照要求,我必须将其删除。我已经尝试过对数据库进行签名/打包,但是它仍然没有摆脱警告。

最佳答案

为此,您必须在“受信任位置”中添加启动Excel的位置。

为此,请执行以下操作:

  • 在Excel选项中,转到“信任中心”,然后转到“受信任的位置”。
  • 添加位置。

  • 这将必须在每个PC上完成。

    此外,从Excel文件的角度来看,这是没有办法的,因为这将完全使用户选择是否运行VBA代码的安全功能无效。

    另外,请注意,如果您签署Excel文件,您仍然需要收件人来信任您作为发布者,因此这就是您的解决方案可能无法正常工作的原因。

    编辑:

    考虑到评论,似乎确实存在以编程方式执行此操作的方法。根据XpertsExchange的资料,

    为什么不从代码中设置注册表项,而不调用Shell?使用在这里找到的c​​Registry类:

    http://www.vbaccelerator.com/home/VB/Code/Libraries/Registry_and_Ini_Files/Complete_Registry_Control/article.asp

    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。我不确定那个。

    关于ms-access - 如何摆脱VBA安全警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3195580/

    相关文章:

    java - 无法连接到 Access 数据库 ("architecture mismatch"错误)

    ms-access - 使用参数的存储过程

    vba - 嵌套宏不循环

    node.js - WEBPACK 弃用数组以使用 web pack 5 在 angular 11 中设置警告

    perl - Perl 中的 warnings::warn 和 FATAL 类别

    c++ - 如何在 ubuntu 12.10 中隐藏 g++ c++11 编译警告

    ms-access - VBA 中 "with"子句的烦人问题

    sql - 不支持 3 个表的 JOIN 表达式

    vba - 用毫秒获取文件的最后修改日期?

    vba - 如何将数组从 (x,y)(z) 维度转换为 (x,y) 维度?