我有一个Excel 2010文件(.xlsm
),其中包含几个模块中的代码,包括ThisWorkbook
。 ThisWorkbook
模块包含一些Event
个过程,包括_SheetActivate
个事件。
我在一张纸上有一个按钮,当点击它时,会激活另一张纸。
今天在处理其中一个常规模块中的一些代码之后,我点击了按钮并得到了一个
Run time error '-2147417848 (80010108)'
Method 'Activate' of object '_Worksheet' failed.
任何尝试激活不同工作表(手动或以编程方式)都会使应用程序崩溃。
经过一些广泛的研究,我发现的只有this page,它提供了有关错误的更多信息:
-2147417848 (80010108): The object invoked has disconnected from its clients.
解决错误对我来说并不是一个问题,因为我不再需要那个特定的事件了。但是,我确实需要弄清楚Excel为什么会崩溃。我试图删除代码,但Excel崩溃了。所以我尝试将代码注释掉,但Excel仍然崩溃了。唉,我尝试的一切都导致了崩溃。这让我相信在该模块中的脚本中必须有一些东西被破坏(其他模块中的代码似乎工作正常,但其他任何程序都没有激活工作表)。
我已经读过一个选项是将所有内容(包括代码)复制到一个新的工作簿上,但是如果可能的话我想避免这样做,因为这需要复制比当前工作表更多...但是我如果没有Excel崩溃,则无法复制其他工作表。有没有人对如何从ThisWorkbook
删除/删除代码有任何想法?
答案 0 :(得分:2)
在计算了太多崩溃之后,我终于能够解决问题了。
首先,我从Ctrl + C
复制了我希望以后可以使用的代码(ThisWorkbook
)并将其粘贴到空白笔记本文件中。然后我按照Patrick建议并导出了常规模块。
此时,我尝试以编程方式删除代码,但Excel再次崩溃。然后我突然意识到我没有 以编程方式手动删除代码或;我刚刚将文件保存为.xlsx
文档,其中按设计删除了代码。
从那里我关闭了文件,将其重新打开,并导入了我之前导出的.bas
个文件。我以.xlsm
格式保存文件之前的最后一步是将复制的代码从第一步粘贴回ThisWorkbook
。
现在一切都像魅力一样。谢谢您的帮助!干杯!