我有一个 Excel 工作簿,里面有 14 个用户表单(每个表单用于输入略有不同的数据类型)。工作簿的行为一直很奇怪——每当我关闭表单时,Excel 应用程序就会退出。我想将所有表单复制到另一个工作簿中,这样我就可以查看它是损坏的工作簿还是问题出在我的代码中。但在 VBE 中,我一次只能复制一个表单。有没有更好的方法可以一次复制多个表单?
答案1
我发现修复损坏的宏二进制 Excel 文件的最佳工具是免费的VBA 代码清理器。安装它将Clean Project...
向 VBE 工具菜单添加一个选项。
- 在 Excel 中打开问题文件。
- 在 VBE 中,选择
Tools
->Clean Project...
- 选择要清理的工作簿并单击“确定”。
- 完成后,重新编译宏并保存。
如果这不起作用,或者你确实想将所有模块从现有的 Excel 文件移到新文件中,我使用的另一个方法是源工具插件。如果您希望它始终可用,请将其保存到%APPDATA%\Microsoft\Excel\XLSTART\
。SourceTools 向 VBE 添加一个工具栏。
- 在 Excel 中打开问题文件并显示 VBE。
- 在项目资源管理器中,选择问题文件的项目名称。
- 单击 SourceTools 工具栏上的软盘图标。(这会将所有模块保存到 [filename].src 文件夹。例如,C:\Data\Test.xlsm 现在将有一个 C:\Data\Test.xlsm.src\ 文件夹。)
- 创建一个新的工作簿并单击 SoruceTools 工具栏上的打开文件夹图标。
- 选择刚刚创建的源文件夹。
- 您将需要手动复制 ThisWorkbook 和任何 Sheet 模块中的任何代码。