簡體   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