最近,单位几个办公室的计算机都被感染了宏病毒,不是变成只读文件,就是不能保存文件。用杀毒软件清除后又被传染,有的文件杀毒后竟然打不开了。我花了大半天时间用VBA编写了一段防杀宏病毒的程序,解决了问题。
工作原理:将下列宏代码存入WinWord的Normal.dot模板中,在打开任意一个或多个文档时Document-Open()自动检查每个文档中代码区的宏代码,如果发现宏代码则显示出前18行,并询问是否清除?由于该段程序彻底地封住了宏病毒的传染途径,使含有宏病毒的文档中的宏代码根本没有发作的机会,所以说理论上可以杀掉所有出现的宏病毒。
附源码:(适用于Word 97/2000)
Private Sub Document-Open()
′888
On Error Resume Next
Application.Options.VirusProtection = False
′取消宏代码检测
If Application.Documents.Item(1).VBProject.VBComp-
onents.Item(1).CodeModule.CountOfLInes 〉 0 And Application.Documents.Item(1)VBProject.VBComponents.
Item(1).CodeModule.Lines(2, 1) 〈〉 ″ ′888″ Then
′发现打开的文档有宏代码时
rr = Application.Documents.Item(1).VBProject.
VBComponents.Item(1).CodeModule.CountOfLines
If rr 〉 18 Then rr = 18
′获取宏代码的行数并控制在18行内
For ee = 1 To rr
kv = kv + Application.Documents.Item(1).VBProject.
VBComponents.Item(1).CodeModule.Lines(ee, 1) + Chr(13)
Next
s = MsgBox(″在文档《″+ Application.Documents.
Item(1) + ″》中找到宏病毒!″+ Chr(13) + kv + Chr(13) + Chr(13) + Chr(13) + Chr(13) + ″是否清除(Y/N)?″, vbYesNo + 32, ″发现宏代码:″)
′列出文档的宏代码并提示是否清除?
If s = vbYes Then
Application.Documents.Item(1).VBProject.VBComponents.
Item(1).CodeModule.DeleteLines 1,Application.
Documents.Item(1).VBProject.VBComponents.Item(1).CodeModule.CountOfLines
Else
MsgBox ″清除过程被中止,宏代码没有改变!″, 48, ″(C)2000 版权所有 严禁拷贝″
End If
If Application.Documents.Item(1).VBProject.VBComp-
onents.Item(1).CodeModule.CountOfLines 〉 0 Then
MsgBox ″中止清除过程或″ + Chr(13) + ″清除宏病毒时出错,请与计算机中心联系。″, 16, ″(C)2000 版权所有 严禁拷贝″
Else
v = ″计算机中心研制 -版本2000 Ver1.0″
MsgBox ″OK! OK! 文档《″+ Application.Documents.Item(1) + ″》中宏代码已清除!″+ Chr(13) + Chr(13) + v, 64, ″(C)2000 版权所有 严禁拷贝″
End If
Else
v =″计算机中心研制 -版本2000 Ver1.0″
MsgBox ″在文档《″+ Application.Documents.Item(1) + ″》中没有发现宏病毒。″ + Chr(13) + Chr(13) + v, 64, ″(C)2000 版权所有 严禁拷贝″
End If
If NormalTemplate.Saved = False
Then NormalTemplate.Save
End Sub
Sub ViewVBCode()
MsgBox ″展望工作室 展望无限″ + Chr(13) + Chr(13) +″Email: laf@21cn.com ″ + Chr(13) + Chr(13) + ″(C) 2000 CopyRight By DALIAN″, 64, ″(C)2000 版权所有 严禁拷贝″
End Sub
在WinWord状态下按“Alt+F11”输入以上代码, 愿广大电脑爱好者早日摆脱宏病毒的阴影。
|