0

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

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

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

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

4

3 回答 3

2

尴尬的。在将宏安全设置为高或中的 Excel 会话中打开工作表,然后对有关在工作表中启用 VBA 宏的对话框回复“否”。

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

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

这大约有一半的时间。

于 2012-07-18T17:37:33.110 回答
1

检查您是否没有对丢失库的引用,如果有,只需取消选中它。我有一个类似的问题,它在我的情况下有所帮助。

于 2014-05-29T14:19:32.870 回答
1

未注册 msinet.ocx 时系统未崩溃并不一定意味着它是问题所在。

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

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

  1. 让 msinet.ocx 注册。
  2. 打开文件而不激活宏。
  3. 然后通过文件的打开代码 ( ) 手动运行 Step by Step (F8 Private Sub Workbook_Open())

最终,您将到达导致系统崩溃的确切代码行。有了这些信息,您将能够获得更多帮助。

笔记:

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

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

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

于 2012-07-19T12:34:11.883 回答