损坏的 VBA 找不到项目模块错误
Corrupt VBA Project Module Not Found Error
我有一个昨天下午保存的工作簿,并且运行良好。我今天早上打开了,VBE里面的模块有none个是'found'。从视觉上我可以看到他们都坐在那里。
当试图打开任何这些模块来编辑代码时,windows 显示为灰色,如下所示。
当我尝试导出代码模块时,出现 'Module Not Found' 错误。
有谁知道 a) 为什么会这样,b) 我该如何解决?
我一开始以为是我的实例Excel,所以重启了电脑。
感谢任何帮助!
我设法找到了解决此问题的方法,因此在其他人遇到类似问题时分享解决方案。
VBA 项目似乎以某种方式损坏了。在下面找到一些建议和变通方法,以便将来尝试解决类似问题。
- 这对我有用。 将
.xlsm
文件转换为 .xls
文件。您可以通过在重命名文件时更改文件扩展名来实现。
- 您也可以尝试转换为
.zip
文件类型,然后再转换回 .xlsm
。注意:以防万一,请转换原件的副本。
其他建议(正如 Chris Nelisen 所建议的)是:
- 定期导出您的 VBA 模块
- 在构建时保存不同的版本
这是一个描述得很好的问题,它完全符合我刚刚遇到的情况(甚至包括我最近没有进行版本控制的事实)。
我的文件有一个 xlsb 后缀。使用不同的后缀重新保存在同一台 PC 上对我不起作用,但我将文件通过电子邮件发送到另一台 PC,打开它,另存为 xlsm,将其发送回原始机器,现在它又可以正常工作了。我什至可以用我喜欢的 xlsb 后缀重新保存,它仍然有效。
我还运行这个脚本来备份我的模块:
Sub ExportVbaModules()
'Acknowledgements to Andy Pope [ozgrid thread 60787]
Dim objMyProj As VBProject 'if error, go to VBA editor - tools - References - Microsoft Visual Basic-Extensibility5.3
Dim objVBComp As VBComponent
Set objMyProj = Application.ActiveWorkbook.VBProject
For Each objVBComp In objMyProj.VBComponents
If objVBComp.Type = vbext_ct_StdModule And objVBComp.Name <> "" Then
objVBComp.Export "C:\Users\MyName\VbaBackups\" & objVBComp.Name & ".txt"
End If
Next
End Sub
And objVBComp.Name <> ""
阻止它在遇到损坏的模块时出错,但由于 'fixed' 文件不包含损坏的模块,结果证明不需要。
由于导出例程如此之快(40 个模块/100kb 在 <1 秒内保存)我将把它分配给功能区上的一个按钮,为它创建的文件提供更好的命名约定。
我将我的 .xslm
文件从我的 PC 复制到我的 OneDrive 帐户。
我在我的 iPad OneDrive 帐户上打开文件,然后导出到 Excel 用于 iOS。该文件打开并显示链接和宏已禁用。然后,我将该文件的副本保存回 OneDrive 帐户。我返回我的电脑并打开 OneDrive 中的文件。我重新建立链接。
宏来自备份。如果您不备份您的宏,就会出现这个问题。
你在 OneDrive 上有这个文件吗?
如果是,我正面临这个问题,并解决了恢复上次保存的问题。如果您打开 OneDrive 站点 (onedrive.live.com),找到该文件和 select 版本历史记录。下载倒数第二个。
我的解决方法非常有效:
- 在安全模式下打开 Excel(启动时按住 Ctrl
程序,或者在您使用 /safe 开关 (excel.exe /safe) 时
从命令行启动程序)
- 打开损坏的工作簿(从安全模式,文件->打开->导航)
- 如果询问则不要启用宏
- 确保宏存在 (Alt+F11) - 不需要
- 另存为新工作簿
- 关闭安全模式excel
- 照常打开保存的工作簿
我有一个昨天下午保存的工作簿,并且运行良好。我今天早上打开了,VBE里面的模块有none个是'found'。从视觉上我可以看到他们都坐在那里。
当试图打开任何这些模块来编辑代码时,windows 显示为灰色,如下所示。
当我尝试导出代码模块时,出现 'Module Not Found' 错误。
有谁知道 a) 为什么会这样,b) 我该如何解决?
我一开始以为是我的实例Excel,所以重启了电脑。
感谢任何帮助!
我设法找到了解决此问题的方法,因此在其他人遇到类似问题时分享解决方案。
VBA 项目似乎以某种方式损坏了。在下面找到一些建议和变通方法,以便将来尝试解决类似问题。
- 这对我有用。 将
.xlsm
文件转换为.xls
文件。您可以通过在重命名文件时更改文件扩展名来实现。 - 您也可以尝试转换为
.zip
文件类型,然后再转换回.xlsm
。注意:以防万一,请转换原件的副本。
其他建议(正如 Chris Nelisen 所建议的)是:
- 定期导出您的 VBA 模块
- 在构建时保存不同的版本
这是一个描述得很好的问题,它完全符合我刚刚遇到的情况(甚至包括我最近没有进行版本控制的事实)。
我的文件有一个 xlsb 后缀。使用不同的后缀重新保存在同一台 PC 上对我不起作用,但我将文件通过电子邮件发送到另一台 PC,打开它,另存为 xlsm,将其发送回原始机器,现在它又可以正常工作了。我什至可以用我喜欢的 xlsb 后缀重新保存,它仍然有效。
我还运行这个脚本来备份我的模块:
Sub ExportVbaModules()
'Acknowledgements to Andy Pope [ozgrid thread 60787]
Dim objMyProj As VBProject 'if error, go to VBA editor - tools - References - Microsoft Visual Basic-Extensibility5.3
Dim objVBComp As VBComponent
Set objMyProj = Application.ActiveWorkbook.VBProject
For Each objVBComp In objMyProj.VBComponents
If objVBComp.Type = vbext_ct_StdModule And objVBComp.Name <> "" Then
objVBComp.Export "C:\Users\MyName\VbaBackups\" & objVBComp.Name & ".txt"
End If
Next
End Sub
And objVBComp.Name <> ""
阻止它在遇到损坏的模块时出错,但由于 'fixed' 文件不包含损坏的模块,结果证明不需要。
由于导出例程如此之快(40 个模块/100kb 在 <1 秒内保存)我将把它分配给功能区上的一个按钮,为它创建的文件提供更好的命名约定。
我将我的 .xslm
文件从我的 PC 复制到我的 OneDrive 帐户。
我在我的 iPad OneDrive 帐户上打开文件,然后导出到 Excel 用于 iOS。该文件打开并显示链接和宏已禁用。然后,我将该文件的副本保存回 OneDrive 帐户。我返回我的电脑并打开 OneDrive 中的文件。我重新建立链接。
宏来自备份。如果您不备份您的宏,就会出现这个问题。
你在 OneDrive 上有这个文件吗?
如果是,我正面临这个问题,并解决了恢复上次保存的问题。如果您打开 OneDrive 站点 (onedrive.live.com),找到该文件和 select 版本历史记录。下载倒数第二个。
我的解决方法非常有效:
- 在安全模式下打开 Excel(启动时按住 Ctrl 程序,或者在您使用 /safe 开关 (excel.exe /safe) 时 从命令行启动程序)
- 打开损坏的工作簿(从安全模式,文件->打开->导航)
- 如果询问则不要启用宏
- 确保宏存在 (Alt+F11) - 不需要
- 另存为新工作簿
- 关闭安全模式excel
- 照常打开保存的工作簿