答案1
一个excel-vba Project
托管在Workbook
...看到Workbook
一个项目下有两个对象是非常令人担忧的(看看 VBE 使用的“幽灵工作表”的图标,似乎还有更多工作簿对象)-我建议您导出所有模块并复制理智的工作表/工作簿代码复制到新文件中(我甚至不会尝试打开鬼影副本)并销毁该副本。
您的项目很可能已在某种程度上损坏。
答案2
我知道这个页面有点旧了,但是,由于我的用户正在使用 Excel 2019/Excel 365,并且我们仍然看到这种情况每年出现几次(因此相当罕见),所以我将添加我的发现。
用户向我提出了担忧,因为他们的工作表在从网络打开时崩溃(复制到本地 PC 时可以正常工作)。当我发现幽灵工作表和额外的“此工作簿”版本时,我尝试恢复早期版本,但所有旧版本都存在类似的问题。我看到此问题的 Excel 文件是跨 WAN 使用的,它们经常在保存期间崩溃。因此,目标文件夹包含许多 *.tmp 文件。因此,我相信这是因为工作表在保存期间未正确保存/损坏而发生的。
我按照上面的 Ricardo 的解决方案解决了这个问题,因此:
- 以新名称保存文件,不带宏(即 *.xlsx)
- 关闭 XLSX 版本并重新打开,检查幽灵工作表和额外的“此工作簿”已消失
- 保存启用宏的新工作表(例如 *.xlsm)
- 将 VBA 宏从旧的破损工作表复制到新工作表(我通过创建新模块并复制/粘贴代码来实现这一点,但是,我确信导出/导入模块也可以工作)。
更高版本的损坏是宏停止工作,当我通过 VBA 编辑器查看时,代码不存在。双击工作表或模块对象没有任何反应(没有出现代码窗口,甚至没有一个空白窗口),因此损坏已蔓延到代码对象。
答案3
这是一个老问题,但我在一个大型项目中也遇到了同样的问题。
但这就是我解决这个问题的方法:
- 使用橡皮鸭将项目代码导出到文件夹中的工具
- 将文件保存为
xlsx
格式(无宏) - 关闭并重新打开文件
- 将所有代码导入项目(您可以拖放类和非工作表/工作簿模块,对于后者,您可以复制粘贴代码)
- 另存为
xlsm
(启用宏) - 关闭并重新打开文件