尝试在以前工作的工作簿中运行任何宏时遇到以下错误:
在进行各种VBA开发之后,它在前一天的最后一次保存和关闭之前一直在工作,但是在今天早上打开工作簿时,我受到了上述错误的欢迎。错误中引用的模块是在Workbook_Open操作中执行的功能。
我仍然可以访问VBA编辑器并尝试进行一些调试,这实际上是对已引用模块的部分进行注释,直到错误不再显示为止。尽管做了这些努力,但是在尝试运行新宏的任何时候都会出现错误。
此错误似乎是由于某种文件损坏而发生的,并且在文件关闭然后第二天重新打开之前没有显示出来。我能够从前一天早上恢复一个自动备份的版本,它完全没有错误地打开(缺少大约4个小时的工作,但比完全丢失文件更好)。这个恢复的文件有宏功能正常,看似已损坏的文件给出了编译错误(并且这些宏在文件版本之间的4小时内没有被修改)。这进一步向我证实,这不是代码的变化,而是某种VBA代码结构的破坏。
是否还有其他人遇到此问题并知道哪里可以开始寻找恢复最新文件?
答案 0 :(得分:0)
在我在已损坏的版本中创建的还原文件中重新构建模块时,我意识到在前一天我已经复制并粘贴了(使用Ctrl-A,Ctrl-C和Ctrl-V)从Sheet对象到模块的一些代码(我原本希望代码能够在导出工作表时与工作表一起迁移,然后改变主意,并希望在工作簿中的其他工作表可以访问代码,同时牺牲能力带导出工作表的代码。)
当我在VBA编辑器中执行复制和粘贴操作时,选择列表中的宏(将宏指定给形状对象时)的宏列出的模块名称为" Parent&# 34;子地址(类似于工作表对象子在工作表中显示为" Sheet1.ExampleSub")。我的潜艇被显示为" NewModule.ExampleSub",当时我一无所知,除了它只是有点奇怪/古怪但不是什么大不了的。将这些宏分配给各种形状对象后,它们测试得很好,我继续我的工作。在此之后的任何时候我都不能关闭并重新打开工作簿,这就是为什么我在第二天之前没有遇到任何编译错误。
这是我唯一可以想到的会导致我得到的工作簿结构错误,现在我已经在恢复的文件版本中重新创建了模块,宏工作正常并且文件关闭并重新开放,没有错误或问题。我仍然不确定为什么在Sheet对象中执行Ctrl-A选择代码并在模块中复制粘贴会破坏工作簿结构,但在这种情况下似乎已经这样做了。