以下是引用zhaoyes在2007-9-29 22:08:58的发言:守柔老大,这个问题我在论坛里找了很久都没有完美的解决方案阿,好像都被当成病毒了,要么就是WORD测试代码的时候弹出安全窗口不给运行代码,现在有更好的解决方案吗? 你没有认真去领会链接中的内容。 请认真阅读代码中的注释行。 '* +++++++++++++++++++++++++++++ '* Created By SHOUROU@ExcelHome 2007-9-30 5:23:56 '仅测试于System: Windows NT Word: 11.0 Language: 2052 '№ 0267^The Code CopyIn [ThisDocument-ThisDocument]^' '* ----------------------------- Option Explicit Function GetComputerName() GetComputerName = Environ("ComputerName") End Function '---------------------- Sub RemoveMoudle() '把所有重要的代码写到"模块1中",如果不够,可再插入"模块2"等 '在代码中继续移除已知名的模块即可. '如果使用代码在模块中循环,则必须在安全性中设置信任对于VB项目的访问 '尽管可以使用VBA完成对于注册表中WORD安全性对于信任VB项目的修改 '但可能通过不病毒扫描程序 '本例只是在允许宏运行的前提下才存在,很明显,若要运行模块中的宏,必须允许 '宏运行,否则他人使用该文档也没有意义 '定义一个3个字节的string型常量 Const MyPassWord As String * 3 = "123" On Error GoTo Finish '如果已移除模块后再次打开时,则退出 '若更可靠些,可以写在文档变量(Variables)中 Application.ScreenUpdating = False '输入密码 Application.VBE.CommandBars.FindControl(ID:=2578).Execute SendKeys MyPassWord & "{Enter 2}", True Application.OrganizerDelete Source:=ThisDocument.FullName, Name:="模块1", Object:=wdOrganizerObjectProjectItems Finish: Application.ScreenUpdating = True MsgBox "OK,已删除!" '此句请删除,仅作为测试用 ThisDocument.Close True End Sub '---------------------- Private Sub Document_Open() '如果计算机用户名不为指定的用户("shourou")则进入删除模块程序 If UCase(GetComputerName) <> UCase("shourou") Then RemoveMoudle End Sub '----------------------
|