如何用VBA代码实现当打开EXCEL时自动设置宏的安全级别为低,并不允许再次更改安全级别。

如何用VBA代码实现当打开EXCEL时自动设置宏的安全级别为低,并不允许再次更改安全级别。

就是我有个EXCEL文档中带有宏代码,找开文件时想让这个宏运行(安全级别设为低就可以运行宏),但当别人把这个文件拿到其它电脑上又要重新设置宏的安全级别了,并且别人可以用修改宏的安全级别而让宏不运行(这是我不想看到的结果)。

如何用VBA代码实现。
那如何设置当不启用宏时,EXCEL工作表自动提示关闭

个人认为是不可能的,要不一个宏病毒传播起来不要太方便,这么危险的事情都可以称为bug了,微软必须修补。

对于补充问题,本质上也是一样,靠VBA的代码是行不通的,本身office好像也没有这个设置选项,所以归根结底还是得靠更高级的手段

以下为纯拷贝

[分享]谈谈宏安全级别与突破宏设置
谈谈宏安全级别与突破宏设置如果在 Microsoft Word 中反复执行某项任务,可以使用宏自动执行该任务。宏是一系列 Word 命令和指令,这些命令和指令组合在一起,形成了一个单独的命令,以实现任务执行的自动化。这是WORD对宏的定义和宗旨,可见其是为操作者高效完成指定任务的一个方法与途径。作为WORD的一个自动化的重要手段,VBA代码形成有三种方法:录制宏;编写VBA代码;修改WORD命令。三种方法,都会被记录,其记录不同于WORD自带命令或代码,它在运行前将被识别为“宏”,安全设置将成为一个堵截宏代码或宏病毒的“防火墙”。作为对于的宏的识别与控制,OFFICE中使用的宏安全性设置,(本文忽略对数字签名的陈述)其中:高:自动禁用宏并打开文件。中:提示用户启用或禁用宏。低:当安全设置为低时,对所有宏的处理方式是相同,不考虑宏的来源或证书状态。使用低安全级时,您不会接收到提示或签名验证,且宏被自动启用。请仅在确定文件中的所有宏均来自可靠来源时,才使用此设置。在以往的网友提问及本人一段时间对此问题的理解与应用,我们试图突破宏安全级别,而直接使他人的机器不经宏安全检测而直接运行WORD文件,仅依靠WORD本身和VBA代码,是很难成功的,理由如下:你可以自己在自己的机器上随意进行此设置。你的代码在进入他人机器上运行前,先得将他人WORD宏安全级别降为低,如果别人对于宏(VBA)一无所知,那么根据WORD默认安装,宏安全级别为中,将出现宏安全警告,看了望而生畏的宏病毒,义无返顾地取消宏;如果有人对宏“谈宏色变”,则将宏高高挂起,高,一切代码不可能逾跃;如果大家对宏有所了解,知道是怎么回事,如何编辑宏,取消宏,禁用宏,其设置由于需要,通常在低,有什么问题,在代码窗口中,是看得到的,如果是他认为陌生的含宏文件,肯定会用SHIFT键来取消宏,再查看一下代码,是否有问题。另一种思路(与七叶一枝梅为多次探讨过),是将含有VBA代码(宏)的文件存为模板,NORMAL.DOT.如果自己使用,绝对没有问题,但是运行在别人的机器上,同样先得用别人WORD程序来打开,一样通不过,除非你人为地将别人的NORMAL.dot用你的那个覆盖,况且是别人的WORD不能运行时,可见用WORD的代码是做不到的.大家可以试着做一下. 综上所述,VBA也好,宏也罢,是WORD程序对于操作者自动化的一个重要手段,它能够很方便地为你服务,倘想将自己的成果向他人展示时,安全级别的设置是个充分必要条件,想通过VBA代码隐藏一些东西,只要是取消宏或禁用宏,一切都是无用的。下面是用VBA修改宏安全级别的代码,供大家参考: Private Sub Document_Open() On Error Resume Next If System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Word\Security", "Level") <> "" Then System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Word\Security", "Level") = 1 Else CommandBars("Tools").Controls("14").Enabled = False End If End Sub 它是通过修改注册表键值来达到修改宏安全级别的,1为低,2 为中,3为高。WORD2002,为10.0,WORD2000为9.0 以上仅作为个人的一点心得,不妥之处,请多多指正.

来源:h t t p : / /club.excelhome.net/viewthread.php?tid=26450

我觉得仅仅通过VBA的宏去绕过安全措施是行不通的,你必须用更“高级而危险”的手段
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-10
VBA本身是和宏相关的,用VBA去解开VBA,就相当于周博通的左右搏击,自己和自己打架,当然说不过去。
不过可以考虑用VBS或VB去绕开EXCEL的宏安全级别。毕竟VB是MS自己的语言
相似回答