1

背景的前三个元素:

  1. 我创建了一个 Excel 模板,该模板又用于创建一个“个性化模板”,其中用户名、用户评论和保存数据路径名嵌入在个性化模板中。
  2. 个性化模板用于制作月度工作簿(实际上是时间表)
  3. 该模板是在 Vista 下运行的 Office/Excel 2007 中创建的,但(当前)目标环境是在 XP Professional 下运行 Office/Excel 2003 的公司网络。因此,这两个模板都创建为 Excel 2003 模板(在开发环境中以兼容模式运行)

到目前为止,一切都很好——模板在开发环境中运行良好——“个性化”代码位于WorkBook_Open(“ThisWorkbook”下的例程中——它运行、删除并保存为个性化模板。两个模板在Sheet1代码中都有“流程宏”(这里的原则是初始模板在“ThisWorkbook”和“Sheet1”中有宏;个性化模板只在“Sheet1”中有宏,从个性化模板创建的工作簿根本没有宏。

在“beta 测试”中,我在 XP(文件格式)下使用 Excel2000 时遇到了问题,在目标机器上,我的 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 存储密钥(运行模板的地方)被完全破坏之前的片刻。

所以对于问题 - 在我再次完成整个过程之前:

  1. 是否有任何客观证据表明 Macafee 删除了“自动运行”VBA 模块?
  2. 如果是,是否有任何解决方法(此模板将由一万企业中的三个人使用 - 所以我无法影响/修改安全策略!!!:() - 如果有是 Macafee 的问题,那么我将不得不重新考虑整个事情!
4

3 回答 3

0

要回答您的实际问题...是的,许多防病毒程序绝对认为在打开 Excel 或 Word 文档时运行的自动运行代码是不安全的,并将其删除,因为十年前的短暂时刻,这实际上是某些蠕虫的工作方式。我不知道 MacAfee 是否特别这样做,但我肯定听说过这种情况。

于 2011-06-16T02:59:25.253 回答
0

万一其他人来到这个线程 - 我现在已经完全检查了我的模板 - 并在目标环境中重新运行它 - Workbook_Open 例程再次被删除。在目标机器上进行了一些挖掘之后,我找到了 Macafee 事件日志,你瞧……
事件类型:警告
事件源:McLogEvent
事件类别:无
事件 ID:258
日期:09/07/2011
时间:15:45 :40
用户:NT AUTHORITY\SYSTEM
计算机:xxxxxxxxxx
描述:文件 F:\Timesheets\Timesheet Generator.xlt\1.OLE包含 X97M/Generic Virus。该文件已使用扫描引擎版本 5400.1158 DAT 版本 6400.0000 成功清除。

所以有确凿的证据。Workbook_Activate() 也会发生同样的事情

“违规”行似乎是

With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        .DeleteLines 1, _
        .CountOfLines
于 2011-07-11T19:25:00.527 回答
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 也会显示!

因此,此测试使我的问题无效 - McAfee 不会删除例程作为 AV 保护的一部分 - 所以我不再寻找解决方法!

现在我需要做的就是弄清楚我的问题到底是什么!

感谢您的评论

于 2011-06-16T09:38:29.363 回答