我正在尝试将Excel VBA宏从Windows XP切换到Windows 7。这两个Windows版本都是32位操作系统。我的Windows7版本是企业版。
VBA代码在Windows XP上运行良好。当我试图在Windows7上运行代码时,它崩溃了,并且没有报告错误描述。
我已经注册了msinet.ocx,这似乎是Microsoft Internet Transfer Control 6.0所必需的。我还试图通过添加额外的com组件tabctl32、comctl332/232/32和comdlg32来修复安全问题,所有这些组件都是ocx文件。然而,没有任何变化-我的代码在Windows7上仍然失败。
一旦取消注册msinet,Excel VBA就会打开我的工作簿,报告缺少的引用msinet,并且根本不工作。如何解决此问题?
发布于 2012-07-19 01:37:33
很尴尬。在宏安全性设置为高或中的Excel任务中打开工作表,并对有关在工作表中启用VBA宏的对话框回答“否”。
如果打开它,您应该仍然能够查看项目,并且如果您尝试编译它,可能会显示明显的缺少引用或错误。
下一步:将工作簿另存为html并关闭Excel。清除temp文件夹,重新启动excel,打开html文件并将其保存回Excel格式。如果你幸运的话,所有的遗留对象和引用都会被清除掉,并被与你的新操作系统兼容的版本所取代。
这大约有一半的时间是有效的。
发布于 2012-07-19 20:34:12
当msinet.ocx没有注册时系统没有崩溃并不意味着这就是问题所在。
如果在ThisWorkbook模块内部或从该模块调用的任何过程中调用了该库(msinet.ocx),并且取消了该库的注册,则当该文件打开并尝试运行On open宏时,该模块将不会编译,因此不会运行导致其崩溃的代码行。(我只是猜测这可能是您的情况。)
尝试找出导致系统崩溃的确切调用。
Private Sub Workbook_Open() )手动运行Step by Step (F8)
最终,您将到达导致系统崩溃的确切代码行。点击这些信息,你将能够得到更多的帮助。
注意:
要在不激活宏的情况下打开文件,可以使用以下方法之一:
在双击文件以将其打开(从windows资源管理器)后,
application.EnableEvents=False (然后按enter键运行)。请注意,这将禁用该Excel实例中每个文件上的事件。您必须将其设置回true或关闭应用程序(而不仅仅是文件)。发布于 2014-05-29 22:19:33
检查您是否没有对缺少的库的引用,如果有,只需取消选中它。我也遇到过类似的问题,这对我的情况很有帮助。
https://stackoverflow.com/questions/11539744
复制相似问题