Windows XP Excel VBA在Windows 7上崩溃

时间:2012-07-18 10:55:53

标签: vba windows-7 excel-2007 windows-xp msinet

我正在尝试将Excel VBA宏从Windows XP切换到Windows 7.两个Windows版本都是32位操作系统。我的Windows 7版本是企业版。

VBA代码在Windows XP上运行良好。当我尝试在Windows 7上运行代码时,它会崩溃并报告没有错误描述。

我已注册msinet.ocx,这似乎是Microsoft Internet Transfer Control 6.0所必需的。我还尝试通过添加其他com组件tabctl32comctl332/232/32comdlg32来解决安全问题,所有这些组件都是ocx文件。但是,没有任何变化 - 我的代码在Windows 7上仍然失败。

取消注册msinet后,Excel VBA会打开我的工作簿,报告缺少的参考msinet,但根本不起作用。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

别扭。在宏安全性设置为高或中的Excel会话中打开工作表,并回答关于在工作表中启用VBA宏的对话框中的“否”。

如果它打开,你仍然可以查看项目,如果你试图编译它,这可能会显示一个明显的缺失引用或错误。

下一步:将工作簿保存为html并关闭Excel。清除临时文件夹,重启Excel,打开html文件并将其保存为Excel格式。如果幸运的话,所有遗留对象和引用都将被清除,并替换为与新操作系统兼容的版本。

这大约有一半的时间。

答案 1 :(得分:1)

msinet.ocx未注册时系统没有崩溃,这并不意味着它就是问题。

如果您在或内部的任何过程中调用了该库(msinet.ocx),那么 ThisWorkbook模块就有了该库unregistered,然后当文件打开并尝试运行On open宏时,模块将无法编译,因此不会运行使其崩溃的代码行。 (我只是猜测这可能是你的情况。)

尝试找出导致系统崩溃的确切调用。

  1. 让msinet.ocx注册。
  2. 在不激活宏的情况下打开文件。
  3. 然后通过文件的开头代码(Private Sub Workbook_Open())手动运行一步一步(F8)
  4. 最终,您将获得导致系统崩溃的确切代码行。怀疑这些信息,你将获得更多的帮助。

    注:

    要在不激活宏的情况下打开文件,您可以使用以下方法之一:

    • 双击文件后按住Shift键并将其打开(从Windows资源管理器中)。要使此方法起作用,必须关闭Excel应用程序。

    • 如果Excel应用程序已打开,请转到VB编辑器并在即时窗口中键入application.EnableEvents=False(然后按Enter键运行它)。请注意,这将禁用该Excel实例中每个文件的事件。您必须将其设置为true或关闭应用程序(而不仅仅是文件)。

答案 2 :(得分:1)

检查您是否没有对缺失库的引用,如果是这样,只需取消选中它。我遇到了类似的问题,这在我的案例中有所帮助。