繁体   English   中英

在“ThisWorkbook”下丢失 VBA 代码(私有子 WorkBook_Open())

[英]Losing VBA code under 'ThisWorkbook' (Private Sub WorkBook_Open() )

背景的前三个元素:

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

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

在“beta 测试”中,我在 XP(文件格式)下使用 Excel2000 时遇到了问题,在目标机器上,我的 WorkBook_Open 例程在主模板(而不是个性化模板)中被删除——即使在 Excel2007/Vista 上一切正常。

我当时觉得 Workbook_Open 的无效删除可能是一个编码错误 - 但在研究这些问题时,我发现了许多关于“Macafee 删除 VBA 模块”的引用。 我没有研究这些——但我意识到目标机器(和环境)运行 Macafee,而我的所有计算机都运行 Norton。

重新编码后,我成功地重新测试了以下内容:

a) Excel 2007/Vista/诺顿
b) Excel 2007/XP 专业版/诺顿
c) Excel 2000/XP Home/诺顿

所以在 Excel 2003/XP Professional/Macafee 中重新测试感觉很舒服

这一次我正在关注它 - 所以,再次看到 WorkBook_Open 例程被错误地从主模板中删除 - 不幸的是,这只是在 USB Memory 密钥(运行模板的位置)被完全破坏之前的片刻。

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

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

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

我已经设法再次到达客户端机器 - 并添加了一个新的简单模板来证明或以其他方式证明我的问题。 新的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 保护的一部分 - 所以我不再寻找解决方法!

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

感谢您的评论

万一其他人来到这个线程 - 我现在已经完全检查了我的模板 - 并在目标环境中重新运行它 - Workbook_Open 例程再次被删除。 在目标机器上进行了一些挖掘之后,我找到了 Macafee 事件日志,你瞧……
事件类型:警告
事件来源:McLogEvent
事件类别:无
事件编号:258
日期:09/07/2011
时间:15:45:40
用户:NT AUTHORITY\SYSTEM
电脑:xxxxxxxxx
说明:文件 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM