vba - 是否启用安全保护功能

标签 vba excel excel-2007

Excel 电子表格需要以编程方式访问其Project 结构。但是,默认情况下此访问处于禁用状态。它可以通过使用以下代码段写入注册表来以编程方式启用:

Set wsh = CreateObject("WScript.Shell")
'key to modify'
str1 = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\" & Application.Version & "\Word\Security\AccessVBOM"
'enable access'
wsh.RegWrite str1, 1, "REG_DWORD"
'read the vba project name'
MsgBox Application.NormalTemplate.VBProject.Name
'disable access'
wsh.RegDelete str1

虽然可以通过编程方式完成(和重置),但这可能会产生安全问题。

在我的项目中,它尝试修改 Project 结构,如果不能,则会抛出错误。可以捕获错误,此时可以运行代码片段以启用访问,也可以向用户显示错误消息以手动启用访问。是通过程序启用访问(稍后可以将其禁用)更好,还是指示用户这样做更好?

最佳答案

在我看来,它可以通过编程方式完成的事实是一个安全问题。鉴于存在这样一个简单的机制来覆盖默认的“保护”,关闭它并不会让用户面临更大的风险。无论如何,任何称职的病毒编写者都会这样做。

也就是说,在工作时将其关闭 20 秒,然后再次打开,(损坏的)窗口打开的时间比要求用户将其关闭的时间要少得多。

我倾向于请求用户允许暂时关闭它,然后确保我再次打开它(因为将其关闭是不行的)。

关于vba - 是否启用安全保护功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1131834/

相关文章:

excel - 获取下个月的名称

vba - 获取工作簿连接名称

vba - MSXML2.ServerXMLHTTP 客户端证书

vba - VBA工作表与多个单元格一起更改

vba - 保存工作簿副本时,工作表变为取消隐藏

excel - Vba 数字格式仅用于 ListObject 的总计计算

vba - 如何显示单元格值偏移事件单元格

vba - 在 Excel 中,有没有办法确定受密码保护的第三方功能区按钮调用的方法?

ssis - 通过 OleDb ACE 访问 Excel 2007 二进制文件 (.xlsb)

excel - 使用 excel vba 从 Web 下载 zip 文件