背景的前三个要素:
到目前为止,非常好 - 模板在开发环境中运行良好 - “个性化”代码位于“ThisWorkbook”下的WorkBook_Open(
)例程中 - 它运行,DELETES ITSELF,并保存为个性化模板。这两个模板在Sheet1代码中都有'process macros'(这里的原理是初始模板在'ThisWorkbook'和'Sheet1'中有宏;个性化模板只在'Sheet1'中有宏,而且工作簿是从个性化模板创建的一切都没有MACROS。
在“beta测试”中,我在XP(PDF格式)和Excel目标机器上遇到问题我的WorkBook_Open例程已在主模板中删除(而不是在个性化模板中) - 即使Excel2007 / Vista上的一切正常
当时我觉得无效删除Workbook_Open可能是编码错误 - 但在研究问题时我发现了一些对'Macafee删除VBA模块'的引用。我没有调查这些 - 但是我意识到目标机器(和环境)运行Macafee,而我的所有计算机都运行Norton。
重新编码后,我成功地重新测试了以下内容:
a)Excel 2007 / Vista / Norton
b)Excel 2007 / XP Professional / Norton
c)Excel 2000 / XP Home / Norton
在Excel 2003 / XP Professional / Macafee中重新测试感觉很舒服
这次我正在关注它 - 所以,再一次,看到WorkBook_Open例程被错误地从主模板中删除了 - 不幸的是,这只是USB存储钥匙(模板运行的地方)之前的一小段时间被彻底销毁了。 / p>
所以问题是 - 在我再次完成整个过程之前:
答案 0 :(得分:0)
要回答你的实际问题......是的,许多防病毒程序绝对认为在打开Excel或Word文档时运行的自动运行代码是不安全的,并删除它,因为十年前的短暂时间这实际上是一些方式蠕虫工作。我不知道MacAfee是否会这样做,但我肯定听说过它。
答案 1 :(得分:0)
我已经设法再次访问客户机 - 并添加了一个新的简单模板来证明我的问题。新的WorkBook_Open
例程是......
Private Sub WorkBook_Open()
MsgBox "Hello World"
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.DeleteLines 1, _
.CountOfLines
End With
MsgBox "Goodbye to all that!"
End Sub
...这完全按照要求工作,即例程执行然后删除自己(即使代码已被删除,第二个msgbox也会显示!
所以,这个测试使我的问题无效 - 迈克菲不会删除例行程序作为AV保护的一部分 - 所以我不再寻找解决方法了!
现在我需要做的就是弄明白我的问题究竟是什么!
感谢您的评论
答案 2 :(得分:0)
JUst万一其他人来到这个帖子 - 我现在已经完全检查了我的模板 - 并在目标环境中重新运行它 - 并再次删除了Workbook_Open例程。在对目标机器进行一些挖掘之后,我发现了Macafee事件日志,并且看到了......
事件类型:警告
活动来源:McLogEvent
活动类别:无
事件ID:258
日期:09/07/2011
时间:15:45:40
用户:NT AUTHORITY \ SYSTEM
计算机:XXXXXXXXXX
描述:
文件F:\ Timesheets \ Timesheet Generator.xlt \ 1.OLE 包含X97M /通用病毒。使用扫描引擎版本5400.1158 DAT版本6400.0000成功清除了该文件。
所以有确凿的证据。 Workbook_Activate()
也会发生同样的事情“违规”行显示为
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.DeleteLines 1, _
.CountOfLines