关于vba:规避超链接安全警告

Circumvent Hyperlink Security Warning

我有一个 VBA 脚本,它循环遍历指向共享点的 ppt 链接列表,打开它们,将它们保存在临时位置,从特定文本框中提取信息并关闭它们。但是,当我尝试打开链接时,我收到了安全警告-

"Opening http://.....pptm

Some files can contain viruses or otherwise be harmful to your computer. It is imporant to be certain that this file is from a trustworthy source.

Would you like to open this file?"

我知道我可以通过进入注册表来禁用它;但是我的公司不允许我这样做。任何人都可以推荐一种方法

  • 自动关闭这些警告/完全禁用它们
  • 以另一种方式从 .ppts 中提取信息。

  • 查看该问题的 MS 支持页面,似乎所有解决方案都不可避免地基于注册表。

    已针对所有版本的 Office 进行测试和工作(使用注册表):

    禁用超链接警告:

    1
    2
    3
    CreateObject("Wscript.Shell").RegWrite _
                "HKCU\\Software\\Microsoft\\Office" & Application.Version &  _
                "\\Common\\Security\\DisableHyperlinkWarning", 1,"REG_DWORD"

    (重新)启用超链接警告:

    1
    2
    3
    CreateObject("Wscript.Shell").RegWrite _
                "HKCU\\Software\\Microsoft\\Office" & Application.Version &  _
                "\\Common\\Security\\DisableHyperlinkWarning", 0,"REG_DWORD"

    我没有尝试过,但这里有几个选项:

    .

  • shell执行(API):
  • .

    1
    2
    3
    4
    5
    Declare Function ShellExecute Lib"shell32.dll" Alias"ShellExecuteA" _
                       (ByVal hwnd As Long, ByVal lpszOp As String, _
                        ByVal lpszFile As String, ByVal lpszParams As String, _
                        ByVal LpszDir As String, ByVal FsShowCmd As Long) _
                        As Long

    来自微软的更多细节

    .

  • 注册表编辑:

  • 单击开始,然后单击运行。
  • 在"打开"对话框中,键入 regedit,然后单击"确定"。
  • 在注册表编辑器中,找到并单击以下注册表子项之一:
    HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Office\\\\11.0\\\\Common
    HKEY_CURRENT_USER\\\\Software\\\\Policies\\\\Microsoft\\\\Office\\\\11.0\\\\Common
  • 注意事项:

    • 您只需修改其中一个注册表子项,而不是两个。
    • 如果 HKEY_CURRENT_USER\\\\Software\\\\Policies\\\\Microsoft\\\\Office\\\\11.0\\\\Common 注册表子项不存在,您可能需要手动创建它。

    • 单击注册表子项后,指向编辑菜单上的新建,然后单击项。
    • 键入 Security,然后按 ENTER 以命名密钥。
    • 在编辑菜单上,指向新建,然后单击 DWORD 值。
    • 键入 DisableHyperlinkWarning,然后按 ENTER 以命名该条目。
    • 在右窗格中,右键单击 DisableHyperlinkWarning,然后单击修改。
    • 在"编辑 DWORD 值"对话框中,单击"十进制",然后在"数值数据"下键入 1。

    注意

    • 值 0 启用超链接警告消息,值 1 禁用警告消息。

    • 单击
    • 退出注册表编辑器。

    来自 Microsoft1 和 Microsoft2 的更多详细信息

    .

  • 修改注册表的VBA代码:
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit

    Function killHyperlinkWarning()
        Dim oShell As Object
        Dim strReg As String

        strReg ="Software\\Microsoft\\Office\\11.0\\Common\\Security\\Dis ableHyperlinkWarning"

        Set oShell = CreateObject("Wscript.Shell")
        oShell.RegWrite"HKCU" & strReg, 1,"REG_DWORD"
    End Function

    在这里找到