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/