删除无法禁用的宏,找不到#REF!$A$2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

删除“无法禁用的宏”

这是上次遇到MSExcel.ToDole宏病毒的后续,不知道为什么有的excel文档在经过专杀处理后,病毒模块已经删除了,但是在打开文档时仍然提示“该工作簿中包含一种无法禁用的宏(Microsoft Excel 4.0版的宏)”,一定要启用宏后才能打开,而在文档里却找不到任何宏,VBA编辑器里也没有多余的代码,也再查不出任何病毒,在C:\Program Files\Microsoft Office\OFFICE11\XLSTART 和C:\Documents and Settings\Administrator\Application

Data\Microsoft\Excel\XLSTART下也没有任何可疑的启动文件。

再次查对病毒的代码,原来还有一个隐藏的宏表存在,只是一度相信专杀工具的能力,认为它已经清除病毒了,没想到竟然还有遗留(也有可能是因为该文档加过密吧)。要显示隐藏的宏表,先从工具-宏-Visual Basic编辑器,右键点击任一工作表(就是sheet那些),点击“查看代码”,把下面代码粘贴到代码窗口:

Sub test()

Dim sh As Worksheet

For Each sh In Excel4MacroSheets

If Not sh.Visible Then sh.Visible = 1

Next

End Sub

将光标定位到代码段内,按F5运行。然后回到工作表的界面(Visual Basic编辑器可以关掉了,上面输入的代码也可以删除,不需要了),就可以看到被隐藏的工作表(注意,通过VBA代码隐藏的工作表是不能通过菜单中的“格式”-工作表-“取消隐藏”来解除隐藏状态的),在我这里出现的原先隐藏工作表是Macro1(如下图),这是一个保护宏的机制,如果禁用宏将不能打开excel文档,被病毒利用来保护自己。

删除此工作表,但事情并没有结束,然后切换到该excel工作簿其它每一个正常的工作表时就会出现“找不到#REF!$A$2”,虽然不影响具体操作,但很烦人,原来这个病毒为每个表都添加工作表级别的名称“Auto_Activate”,并将引用都指向宏表“Macro1”的A2单元格,“Auto_Activate”是一个自动宏,表被激活时自动执行,(病毒代码: s.Add & "!Auto_Activate", "=Macro1!$A$2", False ......),而且这个工作表级别的名称是隐藏的,所以想在菜单中的“插入”-“名称”-“定义”中发现它是不可能的。不过虽然是隐藏的,但删除还是可以的,进入“插入”-“名称”-“定义”,在最上面的框中输入要删除的名称,如本例中的Auto_Activate,然后点击删除,就把这个隐藏的工作表级别名称删除掉了,整个excel工作簿中所有的工作表都要这样删除一遍,这样才能把这个引用宏的影响彻底消除。顺便说一下,如果打开excel 文档出现找不到宏的提示,也可以到这里来查查看是否有什么名称要删除。

最后,保存excel,再次打开就不会出现“无法禁用宏”的提示了,当然这个excel 文档本身原来就没有宏的。

关于显示隐藏的宏表可参考:1、

/thread-294584-1-1.html 2、

/thread-198460-1-93.html

关于保护宏可参考:1、

/a_teacher/blog/static/41721254201111991716601/ 2、/czmao1985/article/details/5969710

答案是我们可以修改注册表的相应选项的DWORD值来实现。在开始-运行,输入regedit,回车,打开注册表编辑器,然后按照这个路径

HKEY_LOCAL_MACHINE\Software\Microsoft\Office\10.0\Excel\Security,找到该选项,双击level,把DWORD值改为3.说明一下,数值3代表安全级高,2代表中等,1代表安全级低。这样我们就可以真正的更改了宏的安全级了。

把level的值删除,即可实现EXCEL软件中的宏安全设置

相关文档
最新文档